java 这段赋值语句 为什么1 和 2都打不出来?

Graphics g = CustomPaint.this.getGraphics();
if (g.equals(CustomPaint.this.getGraphics()))
{
System.out.println("1");
}
if (g == CustomPaint.this.getGraphics())
{
System.out.println("2");
}
g和CustomPaint.this.getGraphics()是地址相同吗?指向同一个地址吗?还是?请详细说明一下java赋值的含义谢谢~~

JAVA当中所有的类都是继承于Object这个超类的,在Object类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被复写了,如String、Integer、Date。在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

所以说,对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,跟双等号(==)的结果相同;如果被复写,按照复写的要求来。
简单来讲就是equals是比较值,==是比较地址,类得重写equals方法,否则也是比较地址
温馨提示:答案为网友推荐,仅供参考