字符串的常量池与字符串的比较相关方法

 

 

package demox.demopro;
/*
字符串常量池:程序当中直接写上的双引号字符串,就在字符串常量;
对于基本类型来说,==是进行数值的比较。
对于引用类型来说,=-是进行【地址值】的比较。
*/
public class Demo2StringPool {
    public static void main(String[] args) {
        String  st1 ="abc";
        String  st2 ="abc";

        char[] charArray ={'a','b','c'};
        String st3 = new String(charArray);

        System.out.println(st1 == st2);
        System.out.println(st1 == st3);
        System.out.println(st2 == st3);
    }
}

 

 

 注意对于引用类型来说,==进行的是地址值的比较

双引号直接写的字符串在常量池当中new的不在池当中

package demox.demopro;
/*
==是进行对象的地址值比较,如果确实需要字符串的内容比较,可以使用两个方法:
public boolean equals(Object obj)、参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true否则返回fals
备注:任何对象都能用object进行接收。
注意事项;
1.任何对象都能用object进行接收。
2. equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。3如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐:"abc".equals(str)不推荐:str.equals( "abc"
 */
public class Demo02_Random {
    public static void main(String[] args) {
        String str1 ="Hello";
        String str2 = "Hello";
        char[] charArray ={'H','e','l','l','o'};
        String str3 = new String(charArray);

        System.out.println(str1.equals(str2));
        System.out.println(str2.equals(str3));
        System.out.println(str3.equals("Hello "));
        System.out.println("Hello".equals(str1));

        String str4="Hello";
        System.out.println(str1.equals(str4));
        System.out.println("********************");

        String str5 =null;
        System.out.println("abc".equals(str5));
        System.out.println(str5.equals("abc"));


        String strA ="JAvA";
        String strB = "JAVA";
        System.out.println(strA.equals(strB));
        System.out.println(strA.equalsIgnoreCase("abcyi123"));
    }
}

 

posted @ 2022-06-30 15:53  zj勇敢飞,xx永相随  阅读(42)  评论(0编辑  收藏  举报