从概念上讲,Java不存在真正的字符串,字符串是由单个字符组成的。字符串就是Unicode字符序列。Java没有内置的字符串类型,而是在标准的Java类库中预定义类,即String类。
子串
String类提供substring方法,用于从一个大的字符串中取出一个小的字符串。
拼接
Java语言允许加好 + 连接俩个字符串。
注意,当一个字符串与一个非字符串连接,非字符串会自动转换成字符串。
不可变字符串
这里说下自己的理解。
首先需要明确String类对象和String变量的区别。
String s1 = new String("This is s1.");
String s2 = "This is s2.";
//需要明确的是:s1和s2内有hash地址,保存在栈内存中。
//"This is s1."存储在堆内存中,s1的hash地址指向"This is s1." 。
//"This is s2."存储在数据区,s2的hash指向它。
s1 = s1 + s2;
//这里将s1与s2连接的字符串重新赋给s1.但需要知道"This is s1."这一对象并未改变。内存中重新new了一个对象,值为s1+s2,然后赋值给s1.
因此说String对象是不可变的,但是String变量可以改变其值。
判断2个字符串是否相同
用equals()方法进行判断。
切记不可有 == 来判断。可以理解 == 对比的是hash的值。
空串和null串
空串是长度为0的字符串。空串是一个Java对象,有自己的长度(0)和内容(空)。
判断一个字符串是否为空串:
if(str.length()==0)
if(str.equals(“”))
null表示没有任何对象与改变量关联。
判断一个变量是否为null:
if(str==null)
if(str !=null && str.length() !=0)/判断一个字符串既不是null也不是空串