相信不管我们运用Java语言来开发项目还是进行数据分析处理,都要运用到和字符串相关的处理方法。这个社会处处有着和字符串相关的影子:日志、文档、书籍等。既然我们离不开字符串,那么就来好好认识一下吧。
怎么构造一个字符串?在Java语言里,有两种方法来创建一个字符串对象:一是用字符串直接量
1 String message=new String("Welcome to Java"); 2 String message2="Welcome to Java";
二是通过字符数组。
1 char[] array={'G','o','o','d',' ','D','a','y'}; 2 String message3=new String(array);
注意:String变量存储的是对String对象的引用,String对象里存储的才是字符串的值。所以严格的说,术语String变量、String对象和字符串值是不同的,只是平常我们为了简单起见,都统称为字符串而已。
不可变?字符串这么拽!String对象是不可变的,它的内容是不能改变的。比如下面的两行代码:
1 String s="Java"; 2 s="html";
第一条语句创建了内容为“Java”的String对象,并将其引用赋值给s。第二条语句创建了一个内容为“html”的新String对象,并将其赋值给s。所以执行这两条语句之后,两个String的对象都没有改变,并且其中的内容也没有发生变化,只是s变量最后指向了新的String对象。
字符串的比较一旦看到比较两字,我们想到的是“==”。然而,运算符==只能检测字符串String1和String2是否指向同一个对象,但它不会告诉我们它们的内容是否相同。因此Java里面判断字符串是否相同,我们应该使用equals方法或者compareTo方法。
1 String s1=new String("Welcome to Java"); 2 String s2="Welcome to Java"; 3 String s3="Welcome to C++"; 4 String s4="welcome TO java"; 5 System.out.println(s1.equals(s2)); 6 System.out.println(s1.equals(s3)); 7 System.out.println(s1.compareTo(s2));
补充:当比较两个字符串是否相等的时候,方法equalsIgnoreCase和compareToIgnoreCase可以先忽略字母大小写然后进行比较。
1 System.out.println(s1.equalsIgnoreCase(s4)); 2 System.out.println(s2.compareToIgnoreCase(s4));
字符串长度、字符和组合字符串length是String类的一个方法,但它是数组对象的一个属性,所以,我们要获取字符串s的字符个数,就要使用s.length()。方法s.charAt(index)可用于提取字符串s的某个特定字符,其中下标index的取值范围在0到s.length()-1之间。
另外,我们可以使用concat方法连接两个字符串。如下代码所示,将字符串s1和s2连接构成了s3。
1 String ss="BaiYi"; 2 String ss2="ShaoNian"; 3 String ss3=ss.concat(ss2); 4 System.out.println(ss3);
当然了,好像平常我们更倾向于更简单的方法,那就是直接使用加号(+)来连接两个或者更多的字符串构成新的字符串。
怎么样获取子串呢?