当前位置: 代码迷 >> J2SE >> java new一个对象属性值为空的小疑点
  详细解决方案

java new一个对象属性值为空的小疑点

热度:147   发布时间:2016-04-23 20:38:59.0
java new一个对象属性值为空的小问题,在线等
java程序中


public class B {

public static void main(String[] args) {
Student[] stu=new Student[20];
        for(int i=0;i<stu.length;i++){
          stu[i].number=i;//
        }

}
}
class Student{
int number;
int state;
int score;
}

这个程序中, stu[i].number=i;//为什么不报空指针错,现我须给这20个对象属性赋值,应该如何写呢,
多谢,
------解决方案--------------------
感觉有点不对劲,啊,应该用list来存储这个20个对象,
Student[] stu=new Student[20];
这个行能通过?

------解决方案--------------------
用数组来保存固定长度的内容完全没问题。楼主的Student类的属性最好声明为private并提供get和set方法

public class Stu {

public static void main(String[] args) {
Student[] stu = new Student[20];
for(int i = 0 ; i < 20 ; i++){
//创建一个Student对象
Student s = new Student();
s.setNumber(i);
stu[i] = s;
//打印设置后的值
System.out.println(stu[i].getNumber());
}
}
}
class Student{
private int number;
private int state;
private int score;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}

楼主只是声明了一个长度为20的Student数组,但是数组里面并没有Student对象,调用stu[i]实际上是null
------解决方案--------------------
楼上正解。
------解决方案--------------------
楼上正解。
------解决方案--------------------
new Student[20],只是创建了一个数组,数组里面的对象初始为null,所以报空指针,需要给数组中每一个对象进行new Student()初始化操作
------解决方案--------------------

public class B {

public static void main(String[] args) {

Student[] stu=new Student[20];
    for(int i=0;i<stu.length;i++){
     stu[i] = new Student();
     stu[i].number=i;//
    }
    
    for(Student s : stu)
     System.out.println(s.number);

}
}

class Student{
int number;
int state;
int score;
}

------解决方案--------------------
Student[ ] 数组 是指向一个Student类型的引用 所以必须是一个Student类型的赋值
------解决方案--------------------

你的这种情况是访问或修改 null 对象的字段。所以报空指针错.
------解决方案--------------------
引用:
用数组来保存固定长度的内容完全没问题。楼主的Student类的属性最好声明为private并提供get和set方法

public class Stu {

public static void main(String[] args) {
Student[] stu = new Student[20];
for(int i = 0 ; i < 20 ; i++){
//创建一个Student对象
Student s = new Student();
s.setNumber(i);
stu[i] = s;
//打印设置后的值
System.out.println(stu[i].getNumber());
}
}
}
class Student{
private int number;
private int state;
private int score;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}

楼主只是声明了一个长度为20的Student数组,但是数组里面并没有Student对象,调用stu[i]实际上是null
正解
  相关解决方案