1.字符串的比较
public class stringConparation {
public static void main(String[] args) {
String s1 = "Welcome to java";
String s2 = new String("Welcome to java");
String s3 = "Welcome to java";
System.out.println(s1 == s2);
System.out.println(s1 == s3);
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
}
}
运算结果
false
true
true
true
- 运算符==只能检测是否指向同一个对象,对于s1和s3指向的对象,和s2不同,而且这里引入了一个interned string object的概念,但我现在是觉得没有必要,你直接说对于两种不同的创建方法,创建出的对象指向的地址不同就可以了。
- 比较的话使用equals方法,这里的返回的boolean型值,还有一种比较的方法就是compareTo()方法,这里返回的就是一个int型的整数,实际值是根据s1和s2从左到右第一个不同的字符之间的距离得出的。(距离的计算是否就是ASCII吗呢?结果我的猜想是正确的)
举例说明compareTo()方法:
String s1 = "abc";
String s2 = "abcd";
String s3 = "abcdfg";
String s4 = "1bcdfg";
String s5 = "cdfg";
System.out.println( s1.compareTo(s2) ); // -1 (前面相等,s1长度小1)
System.out.println( s1.compareTo(s3) ); // -3 (前面相等,s1长度小3)
System.out.println( s1.compareTo(s4) ); // 48 ("a"的ASCII码是97,"1"的的ASCII码是49,所以返回48)
System.out.println( s1.compareTo(s5) ); // -2 ("a"的ASCII码是97,"c"的ASCII码是99,所以返回-2)
2.字符串的长度,字符以及组合字符串
+length() :int //返回这个字符串的字符个数
+charAt(index:int):char //返回这个字符串的制定下标处的字符
+concat(s1:string):String //返回的这个字符串和s1组合而成的新字符串
这里有一个问题就是如果charAt的参数所指的下标是超出这个字符串的长度了呢?
解答:这里会有抛出一个异常 StringIndexOutOfBoundsException
。
3.获取子串
+substring(beginIndex:int,endIndex:int):String
返回的是以指定的beginIndex开始并延续到endIndex-1的字符串的子串。
4.字符串的转换、替换和分隔
+toLowCase():String
+toUpperCase():String
+trim():String //返回去掉了两端的空白字符之后的新字符串
+replace(oldChar:char,newChar:char):String
+replaceFirst(oldString:String,newString:String):String
+replaceAll(oldString:String,newString:String):String
+split(delimiter:String):String
注释:repalce方法只能替换一个字符数,若要用到字符串,那只能用repalceAll,而repalceFirst只是替换遇到的第一个字符串。(一个字符数也可以叫字符串,只是短一点)。