字符串的常量池和比较比较相关方法
字符串的常量池
程序当中直接写上双引号字符串,就在字符串常量池中。
对于基本类型来说,==是进行数值的比较。
对于引用类型来说,==是进行【地址值】的比较。
String s1 = "abc"; String s2 = "abc"; char[] charArray = {'a','b','c'}; String s3 = new String(charArray); System.out.println(s1==s2); System.out.println(s1==s3); System.out.println(s2==s3);
1.对于引用类型来说,==进行的是地址值的比较
2.双引号直接写的字符串在常量池当中,new的不在池当中
比较比较相关方法
equals(Object obj):参数可以是任何对象,只有参数是一个字符串并且内容相同的才会给true;否则返回false。
注意:
1.任何对象都能用Object进行接收。
2.equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。
3.如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐,“abc”.equals(str) 不推荐:str.equals("abc");
equalsIgnoreCase(String str):忽略大小写,进行内容比较。(只有英文字母区分大小写,其他都不区分大小写)
String s1 = "abc"; String s2 = "abc"; char[] charArray = {'a','b','c','l','c'}; String s3 = new String(charArray); System.out.println(s1.equals(s2)); System.out.println(s2.equals(s3)); System.out.println(s3.equals("anclc")); System.out.println("anc".equals(s1)); String str4 = "hello"; System.out.println(s1.equals(str4)); System.out.println("============="); String s5 = "abc"; System.out.println("abc".equals(s5));//推荐 System.out.println("==============="); String s6 = "Java"; String s7 = "java"; //区分大小写 System.out.println(s6.equals(s7)); //忽略大小写 System.out.println(s6.equalsIgnoreCase(s7));