字符串序列:
把多个字符按照一定的顺序排列起来,把多个字符串联起来
字符串的分类:
- 不可变的字符串:
String:当前对象创造完毕之后,该对象的内容(字符序列)是不可能改变的,一旦内容发生改变,就是一个新的对象.(源代码使用final修饰)
- 可变的字符串:
StringBuilder/StringBuffer:当对象创建完毕之后,该对象的内容可以发生改变,当内容发生改变的时候,对象保持不变.
字符串的本质(底层其实就是char[]).char表示一个字符,数组表示同一种类型的多个数据.
如何理解:
String str = "ABCDEF";//定义一个字符串对象,等价于
char[] cs = new char[]{'A','B','C','D','E','F'};
String类:
表示不可变的字符串,当前对象创建完毕之后,该对象完毕之后,该对象的内容(字符序列)是不可改变的,一旦内容改变,就是一个新的对象.
String对象的创建
- 直接赋页一个字面量 String s1 = "ABCD";
- 通过构造器创建 String s2 = new String("ABCD");
两种方式有什么区别,分别在内存中如何分布?
- String对象的空值
- 表示引用为空(null): String s1 = null;没有初始化,没有分配内存空间
- 内容为空字符串: String s2 = "";已经初始化,分配内存空间,不过没有内容
判断字符串非空:
1:引用不能为空(null)
2:字符内容不能为空字符串("");
字符串的比较操作:
1:使用"=="号,只能比较引用的内存地址是否相同
2:使用equals方法,在object类中和"=="号相同,建议子类覆盖equals方法去比较自己的内容,String类覆盖equals方法,比较的是字符内容