中易网

Java中equals和==的区别

答案:5  悬赏:80  
解决时间 2021-04-27 10:19
  • 提问者网友:妖精ξ也會哭
  • 2021-04-27 05:19
Java中equals和==的区别
最佳答案
  • 二级知识专家网友:萌萌哒小可爱
  • 2021-04-27 06:03
你只要记得equals用在判断字符串相等的时候。如果你不能确定他们是否为空。你还要判断!=null,==号不能用来判断字符串是否一样。
全部回答
  • 1楼网友:猖狂的痴情人
  • 2021-04-27 10:45
==是判断两个变量或对象的实例是不是指向同一个内存空间 equals是判断两个变量或实例所指向的内存空间的值是不是相同 举例说明 string str0 = new string("123"); string str1 = new string("123"); system.out.println(" str0.equals(str1)== " + str0.equals(str1)); system.out.println(" (str0==str1)== " + (str0==str1)); 系统最后输出为: str0.equals(str1)== true (str0==str1)== false
  • 2楼网友:懂得ㄋ、沉默
  • 2021-04-27 09:47
①==和equals的实质。 在JAVA中利用"=="比较变量时,系统使用变量在"栈"中所存的值作为比较的依据。 基本数据类型在"栈"中存的是其内容值,而对象类型在"栈"中存的是地址,这些地址指向"堆"中的对象。 java.lang包中的Object类有public boolean equals(Object obj)方法,它比较两个对象是否相等。 其它对象的equals方法仅当被比较的两个引用指向的对象内容相同时,对象的equals()方法返回true。 总之,"=="和"!="比较的是地址.也可认为"=="和"!="比较的是对象句柄;而equals()比较的是对象内容.或者说,,"=="和"!="比较的是"栈"中的内容,而equals()比较的是"堆"中的内容. ②==操作符。专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相当,只能用==操作符。 Java的基本数据类型为(char,byte,short,int,long,float,double,boolean)。 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(对内存),变量本身也占用一块内存,例如Object obj = new Object()变量obj是一个内存,new Object()是一个内存,此时,变量所对应的内存中存储的数据就是对象占用的那块内存的首地址。对于指向对象内存的变量,如果要比较两个变量是否指向同一个对象,即要看这两个变量所对应的内存中的数值是否相等,这时候就需要用==操作符进行比较。 ③构造器形成的差别。对于String和Integer来说,由于他们特有的创建对象的方式。使用构造器和不使用构造器得到一个对象,==方法比较所产生的结果是不同的。 String a = “abc”; String b = "abc"; 此时a==b得到结果为true。String a = new String("abc"); String b = new String("abc");此时a==b得到的结果为false。Integer a = 1; Integer b = 1;此时a==b的结果是true。Integer a = new Integer(1); Integer b = new Integer(1);此时a==b得到的结果为false。
  • 3楼网友:ー何必说爱
  • 2021-04-27 08:23
==,是用来比较基本数据类型的,像int ,byte,short什么的,比较的是它们的值; equals 比较的一般是复合数据类型,比较的是它们在内存中的地址,同样的值,你new两次,那么在内存中分配给它们的地址是不一样的,所以这样的一般用equals。
  • 4楼网友:留下所有热言
  • 2021-04-27 07:28
对待int,String时有区别,对待null的时候有区别
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息