java中字符串的比较
在日常刷题中经常遇到字符串的比较问题,这次把这个问题搞明白
在Java中字符串的比较有两种方式:
1.==
2.equal
为说明两种方式的区别,首先创建一些字符串
String s1='abc';
String s2='abc';
String s3=new String('abc');
String s4=new String('abc');
接下来开始比较:
1. s1==s2; 结果:true
2. s1==s3; 结果:false
3:s1.equals(s2); 结果:true
4. s3==s4; 结果:false
5. s3.equals(s4); 结果:true
说明==和equals两种比较字符串的方法的用法:
1.== 比较地址,只有在指向相同的地址时才返回true(经常会有不同地址存储的值相等,这时返回false)
2.equals 比较值,值相等就返回true,否则返回false
分析造成这种结果的原因
在创建字符串的过程中,为变量s1赋值时,java在内存中存入了字符串‘abc’;为变量s2赋值时,由于相同的字符串Java只会存储一份,因此这里直接将s2指向字符串‘abc’,所以变量s1和s2指向的是相同的存储地址,因此不管是用==还是equals,返回的结果都是true.
s3和s4的创建方式与s1s2不同,在这种方式下直接创建了两个不同的对象,因此用==比较时由于两个对象存储在不同的地址,返回false;用equals比较时,值相等,返回true.

浙公网安备 33010602011771号