【Java笔记】字符串比较

字符串比较

String 类型不是基本类型,而是引用类型。Java 虚拟机为了提高效率并节约内存,对于具有相同字符序列的字符串直接量使用同一个实例。

通过 == 操作符只能判断两个字符串变量是否指向同一个对象,指向同一个对象内容肯定就一样了,这么想想好像是可以用 == 来进行字符串的比较,但是内容一样就一定指向同一个对象了吗?例如,下面语句:

String s1 = "piggy";
String s2 = "piggy";
String s3 = new String("piggy");

System.out.println(s1 == s2);
System.out.println(s1 == s3);

输出结果为:

true
false

发现了吧,s3 和 s1 的内容是一样的,但 s3 是通过创建一个新的实例来创建一个字符串,s1 和 s3 指向的对象是不一样的,所以用 == 比较 s1 和 s3 的结果就是 false。而 s1 和 s2 是使用同一个实例 “piggy” 创建的字符串,所以指向的对象是相同的,所以结果是 true。

所以,如果要比较两个字符串的内容是否相同,我们不应该用双等号,我们可以使用 String 对象的比较方法。

方法描述
equals(s1)如果该字符串等于字符串 s1,返回 true
equalsIgnoreCase(s1)如果该字符串等于字符串 s1,返回 true;不区分大小写
compareTo(s1)返回一个大于 0、等于 0、小于 0 的整数,表明一个字符串是否大于、等于或者小于 s1
compareToIgnoreCase(s1)和 compareTo 一样,除了比较是区分大小写的之外
startsWith(prefix)如果字符串以特定的前缀开始,返回 true
endsWith(suffix)如果字符串以特定的后缀结束,返回 true
contains(s1)如果 s1 是该字符串的子字符串,返回 true

例如下面代码:

String s1 = "piggy";
String s2 = "piggy";
String s3 = new String("piggy");

System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));

输出结果为:

true
true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值