首页 > 学院 > 开发设计 > 正文

java运算符的比较:==和equals,compareTo()

2019-11-14 10:55:50
字体:
来源:转载
供稿:网友

1、== 和 equals的区别:

 ==主要是两个变量值的比较,返回值为true 或者是false。对于普通变量,如:int a=10; int  b= 10; a==b,返回为 true。

而对于下面情况:

String  a=new String("abc");

String  b=new String("abc");

a==b; 返回的则是一个false。这是因为,对于对象的比较是对对象引用的比较,对于a和b ,他们在内存中对应的地址是不一样的,所以 a==b 返回的值是一个false.

==操作符并不涉及对象内容的比较。若要对对象内容进行比较,则用equals. 如果 在本例中,a.equals(b)则返回是一个true值。

总而言之,==是对对象地址的比较,而equals是对对象内容的比较。对于基本数据类型,一般用==,而对于字符串的比较,一般用equals

2、对于compareTo(), 在API中,java.lang包下面的基本数据类型的封装类都提供了该方法,如 Integer,Float,Byte,Short,Character 等

在基本数据中,compareTo()是比较两个Character 对象;

在 Boolean中,是用boolean的实例于其它实例进行比较;

在String 中,则是按照字典顺序进行比较,返回的值是一个int 型。

贴一段代码

public class Test{   public static void main(String args[]){

    String s1=new String("abc");

    String s2=new String("abc");

    System.out.PRintln((s1==s2)? "true":"false");

    System.out.println((s1.equals(s2))? "true":"false");

    if(s1.compareTo(s2)==0){

    System.out.println("s1 is equal s2");}

    s1=s2;

    System.out.println((s1==s2)? "true":"false");

       }     }

程序的运行结果为:

false

true

s1 is equals s2

true


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表