为了账号安全,请及时绑定邮箱和手机立即绑定

当前对象为null 是可以调用方法的,有什么问题吗

public void test(){

Couse i = new Course();

Couse b = new Course("1","2");

System.out.println(i.equals(b));

System.out.println(i.name);

}

public static void main(String[] args){

Equels s = new Equels();

s.test();

}

运行结果为;false null

i为空 可以调用方法呀!有什么问题呢

正在回答

7 回答

你在调用方法前先写一句  i=null; 你就知道怎么回事了

0 回复 有任何疑惑可以回复我~

楼上说的是,Couse i = new Course();这句话,实际上是创建了一个Course对象,内存中开辟了空间来放它,然后i是对这个对象的引用。

所以,它并不是空(null),而是一个对象(的引用)。

老师说,null不能调用equals方法,为什么呢?

如果想调用一个方法,你得先有个对象吧。但是null并不是一个对象,内存中都没它的空间。所以无法调用方法。

就像楼上说的,可以打个比方,

对象相当于一个盒子,方法可以理解为盒子里的东西。

但是null它连盒子都没有,就更没有盒子里的东西了。

11 回复 有任何疑惑可以回复我~

不是那样的,在你用Couse i = new Course();创建了一个Course对象,其中i是这个对象的引用,虽然你没有赋值,但是系统会加上默认值,也就是说此时 i 引用的对象中,id==0, name==null,所以这个 i 引用的不是空对象。 

3 回复 有任何疑惑可以回复我~

其实我觉得可以这样理解,Couse i = new Course(); 就相当于创建了一个盒子,但是盒子里什么东西都没有;而null就相当于连盒子都没有。

2 回复 有任何疑惑可以回复我~

Java 语言规范
虽然 true 和 false 看上去似乎是个关键字,但是他们在技术上而言是属于布尔的字面值类似地,null 看上去也像个关键字,但从技术上而言其是一个表示空的字面值。不是对象,是对象的都继承类Object

0 回复 有任何疑惑可以回复我~

不是啊,任何类都可以调用equals方法,因为equals是Object类里面的方法,而Object类是所有类的根类,任何类其实都是继承Object类

0 回复 有任何疑惑可以回复我~
#1

此用户不存在或被删除 提问者

为何老师要说“请同学们思考一个问题:如果当前的this是空,可以调用equals方法吗?为什么”
2015-12-03 回复 有任何疑惑可以回复我~

Couse i = new Course(); 这个不是null,i是一个没有赋值的对象,应为Couse b = new Course("1","2");这个说明Couse有两个构造函数,一个是空的 还有一个是public Couse(String a, String b ){...},这个构造函数给你变量也赋值类。所以b.属性是会有值得。

0 回复 有任何疑惑可以回复我~
#1

此用户不存在或被删除 提问者

无参的构造方法是无法调用equals的,只要是有参的构造方法都是可以调用equals的是吗
2015-12-03 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

当前对象为null 是可以调用方法的,有什么问题吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信