Java学习之字符串(下)
1.不可变字符串与限定字符串
String
对象不可变的,它的内容不可变。
1.1 下列代码会改变字符串内容吗?
String s = "java";
s = "python";
答案是不能。
- 第一条创建了一个内容为
java
的String
对象,并将其引用赋值给s
。 - 第二条语句创建了一个内容为
python
的String
对象,并将其引用赋值给s
,赋值后第一个String
对象任然存在,但是不能访问。
1.2 对具有相同字符串的序列的字符串直接量使用同一实例,此实例称为限定的。
例如:
String s1 = "Welcome to java";
String s2 = new String("Welcome to java");
String s3 = "Welcome to java";
System.out.println("s1 == s2 is " + (s1 == s2));
System.out.println("s1 == s3 is " + (s1 == s3));
程序结果显示:
s1 == s2 is false
s1 == s3 is ture
在上述语句中,由于s1
和s3
指向相同的字符串Welcome to java
,应此为ture
。而s1
和s2
,虽然内容相同,但它们是不同的字符串对象所以为false
。
2.将字符和数值转化为字符串
使用静态的valueOf
方法将字符和数值转化为字符串
java.lang.String | 解析 |
---|---|
valueOf(c: char):String |
返回包含字符c 的字符串 |
valueOf(data: char[]):String |
返回包含数组中字符的字符串 |
valueOf(d: double):String |
返回表示double 值的字符串表述 |
valueOf(f: float):String |
返回表示float 值的字符串表述 |
valueOf(i: int):String |
返回表示int 值的字符串表述 |
valueOf(l: long):String |
返回表示long 值的字符串表述 |
valueOf(b: boolean):String |
返回表示boolean 值的字符串表述 |
3.字符串的比较
java.lang.String | 解析 |
---|---|
equals(s1: String): boolean |
如果这个字符串等于s1 则返回ture |
equalsIgnoreCase(s1: String): boolean |
如果不区分大小写这个字符串等于字符串s1 则返回ture |
compareTo(s1: String): int |
返回大于0 、等于0 或小于0 的整数以表明这个字符串大于、等于或小于s1 |
compareToIgnoreCase(s1: String):int |
除了不区分大小写之外,其他都和compareTo 一样 |
regionMatches(index: int, s1: String, s1Index: int, len: int): boolean |
如果这个字符串指定的自域精确匹配字符串s1中指定的子域则返回ture |
regionMatches(ignoreCase: boolean, index: int, s1: String, s1Index: int, len: int): boolean |
除了区分大小写,其他和前一个一样 |
startsWith(prefix: String: boolean) |
如果这个字符串以指定的前缀开始则返回ture |
endsWith(suffix: String): boolean |
如果这个字符串以指定的后缀开始则返回ture |