字符串

1.判断两个字符串相等

  在使用new方法创建两个字符串时,这两个字符串对象的值都会保存在内存的栈堆中,首相创建了两个引用,然后在堆中用new方法创建了String的对象实体,并让两个引用指向各自的对象实体,然后这两个对象实体又会分别在栈中创建字符串的字面值内容,这两个引用始终指向两个独立的内存区域。由于“==”是判断内存地址,两个内存地址不同的对象比较起来肯定是“false”,这和它们保存什么样的字面值没有任何关系,所以在使用new方法创建字符串时,直接利用“==”来判断两个字符串是否相等是不行的。

  判断两个字符串是否相等的语法:public boolean equals(String anotherString)。anotherString是被比较的字符串。

  在忽略大小写的情况下判断两个字符串是否相等的语法:public boolean equalslgnoreCase(String anotherString)。anotherString是被比较对象。

  当创建的字符创不是用new方法创建的,而是直接用引用字符串常量时,虽然创建的字符串还是会保存在栈堆当中,但是保存的方式和使用new方法创建时保存的方式不同。在用“name”引用字符串常量“tom”时,Java虚拟机首先会在栈中的常量区中创建“tom”这个字符串常量,然后会自动创建一个匿名的字符串对象指向这个“tom”,最后将匿名字符串对象的地址交给“name”引用。当用“name1”也引用字符串常量“tom”时,Java虚拟机会在栈中的常量区里查找是否有相同的字符串常量,当有相同的字符串常量时,就会直接把这个常量的匿名对象交给“name1”引用,这样“name”和“name1”指向的就是同一个匿名对象,这时候使用“==”比较就会返回“true”。例如:

        String name1String=new String("tom");
        String name2String=new String("tom");
        System.out.println(name1String==name2String);//false
        System.out.println(name1String.equals(name2String));//true
        
        String str1String=new String("abc");
        String str2String=new String("ABC");
        System.out.println(str1String==str2String);//false
        System.out.println(str1String.equals(str2String));//false
        System.out.println(str1String.equalsIgnoreCase(str2String));//true
    
        String str3String="tom";
        String str4String="tom";
        System.out.println(str3String==str4String);//true
        System.out.println(str3String.equals(str4String));//true

2.字母大小写转换

  将字符串变成大写的语法:public String toUpperCase()。

  将字符创变成小写的语法:pubic String toLowerCase()。例如:

        String string="abc ABC";
        String lowString=string.toLowerCase();
        String upString=string.toUpperCase();
        System.out.println(lowString);//abc abc
        System.out.println(upString);//ABC ABC

3.字符串的分割

  将字符串按照指定的符号分割成数组的语法:public String[] split(String regex),其中“regex”是用于分割符号;public String[] split(String regex,int limit),其中“limit”是限制分割的次数。例如:

        String string="abc,def,ghi";
        String[] Array=string.split(",");
        for(String tmp:Array) {
            System.out.print("["+tmp+"]");
        }//[abc][def][ghi]
        System.out.println();
        
        String ipString="101.324.0.21";
        String[] array1Strings=ipString.split("\\.");
        String[] array2Strings=ipString.split("\\.",2);
        
        for(String tmp:array1Strings) {
            System.out.print("["+tmp+"]");
        }//[101][324][0][21]
        System.out.println();
        
        for(String tmp:array2Strings) {
            System.out.print("["+tmp+"]");
        }//[101][324.0.21]

 

posted @ 2021-03-11 23:29  zhang136139613  阅读(30)  评论(0)    收藏  举报