009.关于默认赋值和null的讨论
作者:互联网
1.对于基本数据类型,默认赋值为0
package com.qx.courseTwo; public class Person { int age; }
package com.qx.courseTwo; public class Entrance { public static void main(String[] args) { Person p = new Person(); System.out.println(p.age); } }
输出结果为:0
2.对于引用数据类型,p有所指向时即拥有内存权限时
package com.qx.courseTwo; public class Person { void eat() { System.out.println("Person is eating!"); } }
package com.qx.courseTwo; public class Student { void study() { System.out.println("student is study!"); } }
package com.qx.courseTwo; public class Entrance { public static void main(String[] args) { Person p = null; System.out.println(p.age); p.test(); } }
替换代码:
package com.qx.courseTwo; public class Person { Student student; void test() { student.study(); } // void eat() // { // System.out.println("Person is eating!"); // } }
上述2所有代码运行结果:空指针
替换代码:
package com.qx.courseTwo; public class Person { Student student; void test() { System.out.println(student); } }
上述所有代码运行结果:null
3.总结
1.默认值的不同境遇
①int a;
②Student student;
对于①首先大家可以看到的是int是一个基本数据类型,但没有初始化,但因为是基本数据类型, java会给a一个默认的0。
对于②来说,student这个凭证没有任何权限,并且Student 并不是基本数据类型,没有默认赋值,所以student就等于null。
2.null造成的结果
假设Student 有一个成员变量,grade。则正确的访问是 Student student=new Student ();
student.grade去访问,因为这个时候student已经有了一块内存的凭证。但是如果仅仅是Student student; student并没有被赋予任何内存的凭证。所以这个时候如果调用student.grade就一定会报错。具体就是空指针的错误,会造成程序崩溃。
标签:Student,qx,void,Person,student,009,null,public,赋值 来源: https://www.cnblogs.com/LLL0617/p/16095113.html