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

来源:6-1 学生选课---判断 List 中课程是否存在

此用户不存在或被删除

2015-11-29 04:27

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回答

  • SaintKay
    2017-05-13 10:23:46

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

  • l_yanlei
    2016-02-20 16:11:17

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

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

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

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

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

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

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

  • bryan4it
    2016-01-08 19:17:36

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

  • 会做梦的世界
    2015-12-27 21:13:58

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

  • HansonQ
    2015-12-03 20:16:37

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

  • HansonQ
    2015-12-03 13:09:23

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

    此用户不存在...

    为何老师要说“请同学们思考一个问题:如果当前的this是空,可以调用equals方法吗?为什么”

    2015-12-03 16:25:43

    共 1 条回复 >

  • HansonQ
    2015-11-29 13:37:40

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

    此用户不存在...

    无参的构造方法是无法调用equals的,只要是有参的构造方法都是可以调用equals的是吗

    2015-12-03 00:34:13

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题