java-String 1.1 字符串的比较

写在前面:https://blog.csdn.net/weixin_45857051/article/details/107877785

一、基本概念

字符串常量池

new的对象不在常量池中;
程序当中直接写上的双引号字符串,就在字符串常量池中。

1、==

对于基本类型来说,== 是进行数值的比较。
对于引用类型来说,== 是进行【地址值】的比较。

2、equals / equalsIgnoreCase

如果确实需要字符串的内容比较,可以使用两个方法:
public boolean equals(Objectg obj);
参数可以是任何对象;
只有参数是一个字符串并且内容相同的才会给true,否则返回false。
注意事项:
1、任何对象都能用Object进行接收。
2、equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样;
3、如果比较双方一个常量一个变量,推荐把常量字符串写在前面。
推荐: “abc”.equals(str)
不推荐: str.equals(“abc”)
public boolean equalsIgnoreCase(String str);
忽略英文字母大小写,进行内容比较。

3、compareTo / compareToIgnoreCase

public int compareTo(String str)
该方法是对字符串内容按字典顺序进行大小比较,
通过返回的整数值指明当前字符串与参数字符串的大小关系,
若当前对象比参数大则返回正整数,反之返回负整数,相等返回0。
public int compareToIgnoreCase (String str);
与compareTo方法相似,但忽略大小写。

二、实例讲解

(这里是b站黑马视频中的,对字符串常量池的解释
https://www.bilibili.com/video/BV1Ak4y1o7y8?p=135)
字符串常量池

String str1 = "abcde";
String str2 = "abcde";
char[] charArray = {'a', 'b', 'c','d','e'};
String str3 = new String(charArray);

1、==

System.out.println(str1 == str2); //true
System.out.println(str1 == str3); //false
System.out.println(str2 == str3); //false

2、equals / equalsIgnoreCase

System.out.println(str1.equals(str2)); //ture
System.out.println(str2.equals(str3)); //true
System.out.println(str3.equals("abcde")); //true
System.out.println("abcde".equals(str1)); //true

String str4 = "abcde";
System.out.println(str1.equals(str4)); //false

String str5 = null;
System.out.println("abc".equals(str5)); //false(推荐把常量写前面)
/*System.out.println(str5.equals("abc")); 
不推荐 :报错,空指针异常 NullpointerException*/
String strA = "Java";
String strB = "java";
System.out.println(strA.equals(strB)); 
//false,严格区分大小写
System.out.println(strA.equalsIgnoreCase(strB)); 
//true,忽略英文字母大小写

3、compareTo / compareToIgnoreCase

System.out.println("a".compareTo("b")); //-1
System.out.println("a".compareTo("A")); //32
System.out.println("a".compareToIgnoreCase("A")); //0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值