首页 > 试题广场 >

如下代码输出的结果是?

[单选题]
有以下代码:
class A{
	public A(String str){
		
	}
}
public class Test{
	public static void main(String[] args) {
		A classa=new A("he");
		A classb=new A("he");
		System.out.println(classa==classb);
	}
}
请问输出的结果是:
  • false
  • true
  • 报错
  • 以上选项都不正确
答案为 false  因为== 表示的是否指向的是同一个内存。

 System.out.println(classa.equals(classb));   如果这这样输出 答案也是错误的 因为子类没有覆盖Object
的equals()方法,而默认调用==的这个方法   判断两个对象是否相等需要覆盖equals()方法和hashcaode()方法
发表于 2015-10-21 17:07:27 回复(10)
false;  A classa=newA("he"),因为在new对象的时候会在堆内存中开辟一个空间,同时在栈内存中定义一个classa变量指向这个已开辟好的堆内存空间。 A classb=newA("he"),同理,classb 和  classa的引用指向不同,所以 classa==classb 是false,
但是equals比较两者内容时时true的。
发表于 2015-10-23 09:20:05 回复(3)
这题不管是==还是equals输出结果都为false因为equals没有被重写时默认调用==进行比较。
发表于 2015-12-14 12:45:25 回复(9)
object类――众类鼻祖 1.取得对象信息:toString():对象输出时,会默认调用Object类的toString()方法,将对象信息变为字符串返回。 2.对象相等判断方法:equals():两个对象进行比较时,实际上是比较两个对象的地址值(从程序看出两个对象内容完全相等,但是结果是不相等的,这是因为classa与classb的内容分别在不同的内存空间指向了不同的内存地址)。所以要对equals()进行覆写,判断equals()方法里面的Object类对象是否与调用equals()的类是同一个类的实例(用instanceof判断),如果是,则进行向下转型,然后再调用String类中的equals方法对属性进行比较。 3.对象签名:hashCode():Object类有两种方法来推断对象的标识:equals()和hashCode()。如果根据equals()方法判断两个对象是相等的,那么对这两个对象中的每一个调用hashCode()方法都必然生成相同的整数结果。但是反过来,如果两个hashCode()返回的结果相等,两个对象的equals()方法却不一定相等。在默认情况下equals()方法用来比较两个对象的地址值,而原始的hashCode()方法用来返回其所在对象的物理地址(ps:对于非字符串变量而言,equals和==比较的是地址,对于字符串变量而言equals()比较的是内容==比较地址)
编辑于 2017-03-12 12:18:03 回复(0)
String 类给我们覆盖了equals和hashCode方法了。所以我们可以直接判别字符串,但是这个自定义的类没有给我们覆盖,所以利用equals进行判断仍然为错
发表于 2016-12-29 16:47:18 回复(0)
A  == 比较的是地址
发表于 2015-10-23 13:36:24 回复(0)
==比较的是内存,equals比较的内容,其中String类型的需要注意,默认重写了equals,所以对于String,两者意义相同
发表于 2017-07-18 19:46:14 回复(0)
使用new关键字就会创建一个新的对象
发表于 2016-09-02 01:10:39 回复(0)
发表于 2016-05-28 22:08:00 回复(0)
两个不同的对象求 == 比较的是引用,是不相等的。
发表于 2015-10-27 15:07:10 回复(0)
烂题,我说你没有无参构造报错你服不服?屏蔽了
发表于 2023-03-14 08:33:37 回复(0)
==比较的是地址,两个new出来的对象是不同的引用,地址不同
发表于 2020-07-28 15:40:11 回复(0)
两个new出来的对象是不同的地址引用 == 比较地址,所以false
发表于 2019-12-03 17:06:02 回复(0)

这题不应该考查的是new吗?new出来的开辟的俩个内存,复杂类型==比较的是地址值,否则就是值的内容,返回结果当然是false,new出来的每个对象都有自己的空间和地址,即使值一样,地址不一样也不是相同的对象,都扯到什么东西了,balabala那么多,针不见血。

发表于 2019-07-21 14:40:23 回复(0)
有一点需要注意,==可以直接用来比较基本数据类型,而equals()只能用来比较对象。
发表于 2019-05-10 20:42:31 回复(0)

注意使用equals也是返回false,因为没重写equals方法,使用的仍是Object 的equals方法,即使用==判断

发表于 2019-03-26 12:43:12 回复(0)

显式写了带参数的构造方法 不需要显式写出不带参数的构造方法?



发表于 2018-12-02 14:19:47 回复(0)
没有被覆盖的Object源码如下 public boolean equals(Object obj) { return (this == obj); }
发表于 2018-03-21 17:37:14 回复(0)
两个类对象能直接比较?
发表于 2015-10-20 00:49:57 回复(2)
==判断的是内存位置吧,理所当然就false了。。。
发表于 2015-10-19 17:59:33 回复(0)