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.

posted @ 2021-08-22 21:06  wuwuyehw  阅读(819)  评论(0)    收藏  举报