String类详解
String类
- 概述:
1.String类在java.lang包下,使用的时候不需要导包;
2.String类代表字符串,java程序中的所有字符串文字都被称为此类的实例,即java程序中所有的双引号字符串都是String类的对象;
3.字符串不可变,它们的值在创建后不可更改。
- 常见的构造方法:
方法名 | 说明 |
---|---|
public String() | 创建一个空白字符串对象,不包含任何内容 |
public String(char[] chs) | 根据字符数组的内容来创建字符串对象 |
public String(String original) | 根据传入的字符串内容,来创建字符串对象 |
String s = “abc” | 直接复制的方式创建字符串对象,内容就是acv |
- 创建字符串对象的区别:
1. “==” 号比较
数据类型 | 比较内容 |
---|---|
基本数据类型 | 值 |
引用数据类型 | 地址 |
2.双引号创建对象
①以""方式给出的字符串,只要字符序列相同,无论在程序中出现几次,JVM都只会创建一次对象,并在常量池中维护;
②字符串常量池:使用双引号创建对象时,系统会有现在常量池中检查字符串是否存在,不存在 => 创建, 存在即复用。
③具体代码&&运行结果:
String s1 = "abc";
String s2 = "abc";
System.out.println(s1 == s2);
3.通过构造方法new创建的字符串对象
①每创建一次就会在堆内存开辟一次空间,虽然内容相同,但地址值不一样。
②具体代码&&运行结果
String s3 = "abc";
String s4 = new String("abc");
System.out.println(s3 == s4);
4.String类常见面试题
①字符串拼接
String s5 = "abc";
String s6 = "ab";
String s7 = s6 + "c";
System.out.println(s5 == s7);
字符串拼接的原理:
当字符串之间使用"+"拼接的时候,系统底层会自动创建一个StringBuilder对象,然后再调用其append()方法完成拼接,最后再调用toString()方法转为字符串类型。
②常量优化机制
String s8 = "abc";
String s9 = "a" + "b" + "c";
System.out.println(s8 == s9);
java存在常量优化机制,在编译的时候就会将"a"+“b”+“c” 拼接为"abc"
- 字符串的遍历
public char charAt(int index) 返回指定索引处的char值 public int length() 返回此字符串的长度
String str = "HelloWorld";
// for循环遍历
for (int i = 0; i < str.length(); i++){
// 获取指定索引处的字符
char ch = str.charAt(i);
System.out.print(ch + " ");
}
- String方法小结
方法名 | 说明 |
---|---|
public boolean equals(Object obj) | 比较字符串的内容,严格区分大小写 |
public boolean equalsIgnore(String str) | 比较字符串的内容,不区分大小写 |
public int length() | 返回字符串的长度 |
public char charAt(int index) | 返回字符串中指定索引处的字符 |
public char[] toCharArray() | 将字符串拆分为字符数组后返回 |
public String subString(int begin, int end) | 根据开始&&结束索引截取字符串并返回新的字符串(包头不包尾) |
public String subString(int begin) | 根据开始索引截取字符串末尾结束并返回新的字符串 |
public String replace(CharSequence target,CharSequence replacement ) | 使用新值,将字符串中的旧值替换,从而得到新的字符串 |
public String[] split(String regex) | 根据传入的规则切割字符串,得到字符串数组 |