您的位置:首页 > 其它

== 和equals区别?

2018-03-28 14:30 465 查看
==是判断两个变量或实例是不是指向同一个内存空间(就是栈区的指针、hash的key键等)
equals是判断两个变量或实例所指向的内存空间的值是不是相同(也就是堆区保存的内容)

除了String和封装器,equals()和“==”没什么区别
但String和封装器重写了equals(),所以在这里面,equals()指比较字符串或封装对象对应的原始值是否相等,"=="是比较两个对象是否为同一个对象

==是判断两个对象是否是同一个对象
eg:

    equals是进行值的判断
    String a = new String("aaa");
    String b = new String("a");
    b += "aa";
    则 a==b //错误
    a.equals(b)//正确

类型封装器客观理解就是为了加强普通的值类型(如boolean,char,int等),从而使普通值类型也能像其他对象一样有自己的方法。下面列出JAVA中的封装器对象及对应的值类型。Boolean booleanCharacter   charByte byteShort shortInteger intLong longFloat floatDouble  double按说我们封装一个数值类型时需要两步操作
[java] view plain copychar c = 'a';  
Character C = new Character(c);  

这样看来比较容易理解,c作为一个数值,初始化类Character。但是JAVA做的比较好,我们可以用更简单的方式完成以上操作[java] view plain copyCharacter C = 'a';  

当然封装类还有很多实用的静态方法[java] view plain copyint i =Integer.parseInt("123");   
String s =  Integer.toHexString(15);// s 值为 “f”  

另外下面的操作也是合法的,涉及了装箱和拆箱。[java] view plain copychar c = 'a';  
Character C = c;//装箱  
System.out.println(C);  
c= C;//拆箱  
System.out.println(c);  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: