一、概述
字符串是由多个字符组成的字符序列的字符串常量,java中所有的字符串都是String类的实例
二、字符串对象内容的不可变(String类声明字符串的特点)
三、+=运算会重新创建新的字符串对象
四、创建字符串对象的两种方式
1、直接使用""引用字符序列创建字符串对象(在堆内存的字符串常量池中)
注:只有当堆内存中字符串常量池中没有该字符序列时才会创建新的字符串对象,否则使用的就是常量池中包含有该字符序列内容的字符串对象
2、使用new关键字创建字符串对象(在堆内存的非字符串常量池区域)
注:直接根据字符序列创建新的字符串对象
五、String类中的构造方法
1、无参构造
2、字符串
3、byte数组(数据传输)
4、字符数组(数据处理,如排序)
六、String类中的判断方法
七、String类中的获取方法
八、String类中的转换方法
1、Integer类中的toString方法(非静态的)和String类中的valueOf方法都能将Integer对象转换为字符串
但String类中的valueOf方法能够避免空指针异常
2、String类中拼接字符串的方法
3、自定义拼接字符串方法
public class StringDemo {
String value;
public StringDemo(String s) {
value=s;
}
public static void main(String[] args) {
String s="abc";
System.out.println(new StringDemo(s).concatC("gh"));
}
public String concatC(String s){
int newLen=s.length();
if(newLen==0){
return value;
}
int oldLen=value.length();
char[] chars = value.toCharArray();
char[] chars1 = Arrays.copyOf(chars, oldLen + newLen);
s.getChars(0,newLen,chars1,oldLen );
return new String(chars1);
}
}
九、String类中的替换方法
十、问题探讨:
1、问题一:
情况1:
情况2:
引用变量s最终指向的都是字符串对象abc的地址,为什么上述两种情况会有不同的结果?
2、问题二:
空字符串在String类底层如何进行隐式创建字符串对象的?
十一、知识普及
unicode和utf-8
Unicode 是一个字符集,定义了字符的编码,而 UTF-8 是一种特定的编码方式,用来将 Unicode 字符转换成字节序列,以便在计算机系统中存储和处理。