首页 > 代码库 > 关于 == 和 equals
关于 == 和 equals
在java中,equals方法是继承自object类。它与==不一样。
==用来比较两个名称是否参考自同一个对象,equals方法用来比较两个名称对应的内容是否相同。
例如:
import java.io.*; import java.util.Scanner; import java.math.*; import java.lang.*; public class Main10 { public static void main(String[] args) { String a = "Hello"; String b = "Hello"; System.out.println("a == b?" + " " + (a == b)); System.out.println("a == b?" + " " + a.equals(b)); Integer c = 3; Integer d = 3; System.out.println("c == d?" + " " + (c == d)); System.out.println("c == d?" + " " + c.equals(d)); } }
执行结果为:
a == b? true
a == b? true
c == d? true
c == d? true
这是因为a和b,c和d参考的是同一个对象,它们指向的是同一段内存。对于String类,维护一个String Pool,对于一些可以共享的字符串对象,会先在String Pool中查找是否存在相同的String内容(字符相同),如果有旧直接传回,而不是直接创建一个新对象,以减少内存的消耗。所以对于==,a和b参考的是一个对象,都是“Hello”这个字符串。对于equals方法,a和b,c和d的内容是一样的,所以也是true。
import java.io.*; import java.util.Scanner; import java.math.*; import java.lang.*; public class Main10 { public static void main(String[] args) { String a = new String ("Hello"); String b = new String ("Hello"); System.out.println("a == b?" + " " + (a == b)); System.out.println("a == b?" + " " + a.equals(b)); Integer c = new Integer(1); Integer d = new Integer(1); System.out.println("c == d?" + " " + (c == d)); System.out.println("c == d?" + " " + c.equals(d)); } }
执行结果为:
a == b? false
a == b? true
c == d? false
c == d? true
在==的时候都输出false,这是因为他们不再参考同一个变量,a,b对应的是new出的两个不同的对象,同理c,d也是。
但是它们的内容还是一样的,所以equals方法中都输出true。
关于 == 和 equals
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。