这里刚好涉及在内存中如何创建对象,因为Course gd=new Course("高等数学");创建步骤如下:
1.声明一个Courese类引用gd
2.在方法区加载Course字节码
3.在堆内存创建一个new Course对象
4.对象默认初始化
5.对象显示初始化
6.加载构造方法,进行初始化
7.将对象地址赋值给gd
所以你可以发现默认初始化后 name=null.再显示初始化score,所有就变成空指针异常,这种情况最好
把这行放到构造函数里面区
- class Course {
- private String name;
- private int score;
- //高等数学 5分 线性数学3 离散数学4
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Course(String name) {
- super();
- this.name = name;
- score=name.equals("高等数学")?5:((name.equals("线性数学"))?3:(name.equals("离散数学")?4:0));
- }
- @Override
- public String toString() {
- return "Course [name=" + name + ", score=" + score + "]";
- }
-
- }
复制代码 |