猿问

equal和==的区别?

AI方法
浏览 2662回答 7
7回答

211103

首先在内存中的方法是equals不是equal。要深入的了解这个你需要具体知道数据在内存中的存储方式,基本数据类型和引用数据的地址是存储在栈中,==就是比较的这个内容。equals的话其实也是这个,在java共同父类中Object中有这个方法,不过其在String中将他进行了重写(因为对于引用数据来讲比较地址是没用的,需要具体到值),最终在String中equals比较的就是他们的值。其实你只要记住比较基本数据类型用==就好,String的话就用equals就好了。

阿旭_

public class Test5 extends Object { public static void main(String[] args) { // 分析equals不同类中的源码比较与==的不同 // /*1、类中equals 此equals来源于Object(默认:Test5 extends Object )*/ // public boolean equals(Object obj) { // return (this == obj); // } System.out.println(new Test5().equals(new Test5()));// 此时equals比较两个不同对应的地址 // /*2、字符串equals ("ABC".equals("ABC")和new String("ABC").equals("ABC")等价)*/ // public boolean equals(Object anObject) { // if (this == anObject) {//2.1 先判断两个地址是否相同 // return true; // } // if (anObject instanceof String) { //2.2 再判断传入的是不是字符串 // String anotherString = (String) anObject; // int n = value.length; // if (n == anotherString.value.length) {//2.3如果是字符串,长度是否相同 // char v1[] = value; // char v2[] = anotherString.value; // int i = 0; // while (n-- != 0) {//2.4如果长度相同,是不是每个对应位置的字符相同 // if (v1[i] != v2[i]) // return false; // i++; // } // return true; // } // } // return false; // } System.out.println("ABC".equals("ABC"));// 地址(否)字符串(是字符串)长度(相同)每个字符(相同)结果是true // 总结,equals就是一个方法,不同的类有不同的代码,也可以自己重写设置自己想要的方法体。 // 归根结底都要用==来比较值(char[字符串就是用的这个比的]、int、boolean……),要么比较地址(两个对象地址是不是一样的) } }

xiao梦

equals()一般是比较字符串内容是否相等。==用于比较对象的内存地址是否相同。

Crumble_3614235

==比较的是对象的内容还有地址是否一致equals 比较的是对象的内容是否一致

ziom

前者一般用于比较两个字符串,后者用于比较两个对象的内存地址是否相同。

AI方法

equal判断的事内容,==判断的是地址 这样说对吗
随时随地看视频慕课网APP

相关分类

Java
我要回答