String 类是基本数据类型之一,但用的较多,故多了解一下
String 是一种常量,效果上相当于字符数组,底层原理是字节数组
1.构造方法
有 3种构造方法,1种直接创建
String str1 = new String(""); //里面没有双引号时,也是空字符串
char[] charArray = {'A','B','C'};
String str2 = new String(charArray); //根据字符数组创建
byte[] byteArray = {97,98,99};
String str3 = new String(byteArray); //根据字节数组创建
String str4 = "hehe"; //根据双引号直接创建
直接创建的字符串,会进入字符串常量池,可以使用 == 判断
2.方法
1.比较内容是否相同
String str1 = new String("hehe");
String str2 = new String("hehe");
System.out.println(str1 == str2); //false
System.out.println(str1.equals(str2));//true
//比较内容是否相同,忽略字母大小写
String str3 = new String("hehe");
String str4 = new String("HeHe");
System.out.println(str3.equals(str4)); //false
System.out.println(str3.equalsIgnoreCase(str4)); //true
(如果前面的字符串值是null,那么会报空指针异常)
2.字符串获取长度,单个字符,子串位置
int length = "fdsaagweffdsvcv".length();
System.out.println("字符串的长度是:"+length);
//获取指定索引的单个字符
char ch = "Hello".charAt(1);
System.out.println(ch); //e
//获取子串在首次位置
String old = "HelloWorld";
int index1 = old.indexOf("l"); //从左边开始
int index2 = old.lastIndexOf("l"); //从右边开始
System.out.println(index1); //2
System.out.println(index2); //8
3.拼接字符串
String str1 = "Hello";
String str2 = "World";
String str3 = str1.concat(str2);
System.out.println(str3); // HelloWorld
//简化写法,使用 str3 = str1 + str2;
4.字符串的截取
String str1 = "HelloWorld";
String str2 = str1.substring(5); //从开始位置到结束
String str3 = str1.substring(0,5); //给定开始位置和结束位置
System.out.println(str2); // World
System.out.println(str3); // Hello
5.字符串的转换
char[] chars = "Hello".toCharArray(); //转换为字符数组
System.out.println(Arrays.toString(chars));
byte[] bytes = "Hello".getBytes(); //转换为字节数组
System.out.println(Arrays.toString(bytes));
String str1 = "How old are you?";
String str2 = str1.replace("o","*"); //字符串内容的替换
System.out.println(str2);//H*w *ld are y*u?
6.字符串的分割
String str1 = "aaa,bbb,ccc";
String[] array1 = str1.split(",");
//参数是个正则表达式,报错后无法分割,如果是"."不能这么写,而是"\\."
System.out.println(Arrays.toString(array1));
7.判断此字符串的开头和结尾
String s = "Hello,Java.txt";
boolean b1 = s.startsWith("He");
//是否以He开头
System.out.println(b1); //true
boolean b2 = s.endsWith(".txt");
//是否以.txt结尾
System.out.println(b2); //true