注:
- 参考《java核心技术 卷一》
字符串
从概念上讲,字符串就是unicode字符序列。这一段怎么理解,这一段的话可能要从char这个字符去理解吧,char字符型每一个都有对应的unicode,而字符串类型就是char的序列也就是unicode的字符序列。
拼接字符串
跟绝大多数的编程语言一样java是支持拼接字符串的:
String str = "你好,世界!";
str = str.substring(0,3); // "你好"
按照书中解释,java本身字符串是无法修改的,就是说这几个字符串你想修改最后的几个字符串没有任何方法可以直接在原来上面修改,也就是不可变的字符串,但是可以拼接,就是截取你需要的部分在拼接到一起,然后在将拼接好的字符串重新赋值给这个字符串变量。其实这很容易理解。但是这样的拼接里面带有java字符串内存共享的高效方法,虽然拼接相对损耗性能,但是书中所言是java设计者共享所带来的高效率远远高于字符串拼接。
String str = "你好,世界!";
str = str.substring(0,3) + ",吃了么!"; // "你好,吃了么!"
检测字符串相等
String str = "Hello";
str.equals('Hello'); //java比较字符串应该是用这个方法而不是用==
str.equalsIgnoreCase('hello'); //不区分大小写
==是对比的是内存位置是否相等,但是比较字符串应该比较的是两个字符串的值是否相等,如果用==的话就会导致相同字符串在不同的内存位置中报错,所以强类型严谨就严谨在这种地方了。
空串和null
检测空字符串可以使用length()来检测字符串个数是否为0。
str.length() == 0; //检测字符串是否为空串也就是""
str == null; //检测字符串是否为null
//但是null字符串用length方法是会报错的,所以一般先检查是否为null
str != null && str.length() == 0;
//也许配合上面的equals方法我们可以写成这样
str.equals("hello");//如果str为null就会报错
"hello".equals(str); //所以我们可以改成这样就不会报错了
常用字符串方法
字符串方法大概有五十个,书中列举了常用的部分方法,这里就不一一列举。
构建字符串
有些时候使用字符串+=来拼接字符串的话性能是比较差的,所以java也给出了另一种方案,StringBuilder来构建字符串:
StringBuilder builder = new StringBuilder();
builder.append(ch);
builder.append(str);
String completedString = builder.toString(); //就可以得到String对象
但是注意java8,直接使用字符串拼接的话,内部会使用stringbuilder来帮你拼接,所以已经使用了java8的朋友们直接使用+来连接字符串即可。