java中字符串相等判断

字符串的判断有2种:

        1、判断地址是否相等  用:==

        2、判断值是否相等  用:equals方法

Object类作为所有类的超类,而Object类的equals方法是直接比较地址的,源码如下:

1public boolean equals(Object obj) 2 { 3 return this == obj; 4 }

所以,在String类中的equals方法,是重写了Object类的equals方法的,String类的equals方法源码如下:

1public boolean equals(Object anObject){ 2 3 if(this==anObject){ //比较地址,如果地址相等,直接返回true 4 5 return true; 6 7 } 8 9 if(anObject instanceof String){ //如果地址不相等,那就比较类型,如果类型不相等,直接返回false 10 11 String anotherString =(String)anObject; //由于是String类的比较,所以要把对象强转为String类 12 13 int n=value.length; //记录当前对象的字符长度 14 15 if(n==anotherString.value.length){ //判断当前对象的字符串长度和传入的字符串长度是否一样,不一样,直接返回false,如果一样,接着往下比较 16 17 char v1[]=value; 18 19 char v2[]=anotherString .value; 20 21 int i=0; 22 23 while(n-- !=0){ //将2个字符数组的循环对比 24 25 if(v1[i] !=v2[i]) //将字符数组的字符进行对比 26 27 return false; //如果出现一个字符不同,马上返回false 28 29 i++ 30 31 } 32 33 return true; 34 35 } 36 37 } 38 39 40 return false; 41 42}

String类的equals比较内容相同思路如下:

  1、先判断地址是否相等,相等返回true

  2、比较类型是否一样,不一样,返回false

  3、将传入的对象强转为String,比较长度,长度不相等,返回false

  4、长度相等,循环比较字符数组的元素,当有一元素比较内容不相同,马上返回false

  5、2个字符数组循环比较所有元素,没有内容不相同的元素,返回true

测试代码如下:

1public class TestString { 2 public static void main(String[] args) { 3 String str="abc"; 4 String str2=new String("abc"); 5 System.out.println("两个对象的内存地址是否相等:"+(str==str2));//false 6 /**比较对应位置上的字符是否相等,如果所有的对象位置上的字符均相等,true,否则返回false*/ 7 System.out.println("两个对象的内容是否相等:"+(str.equals(str2))); 8 9 10 //以下结果为 false 11 /**因为Person对象 instanceof String 的结果为false ,直接返回false*/ 12 System.out.println("String对象与Person对象的内容是否相等:"+(str.equals(new Person()))); 13 } 14} 15class Person{ 16 17}

水平有限,还请多多指教!

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

java实现判断两个二叉树是否相同

1、定义树节点类:节点值、左节点、右节点、构造器2、先判断树是否为空的情况3、树不为空时,判断节点所指的值是否相等,若相等,则递归判断节点的左右节点是否相同,相同则返回true/\\ \Definitionforbinarytree \publicclassTreeNode{ \    intval

java采坑之路

判断相等字符串判断相等        String str1  null;        String str2  "java金融";       // str1.equals(str2);  错误的写法        str2.equals(str1); // 常量写前面        Objects.equ

补充关于equals的比较方式

补充(equals比较)java.lang.String类中的方法equals判断相等依据策略:如果与目标相等返回0,小于目标返回值小于0,大于目标返回值大于0language@NativestaticfinalbyteLATIN10;@NativestaticfinalbyteUTF161;language/Compa