public class Test
{

public static void main(String[] args) 
{

/* 此处注释掉的代码,有错误; 思考为什么 后面的替代代码没有错误
Person[] persons = new Person[2];
persons[0].personName = "tsh0";
persons[0].personCode = "0";
*/

Person[] persons = new Person[2];

for(int i=0; i<persons.length; i++)
{
Person person = new Person();
person.personName = "tsh" + i;
person.personCode = String.valueOf(i);
persons[i] = person;
}

System.out.println(persons[1].personName);

}

public static class Person
{
public String personName;
public String personCode;
}}

解决方案 »

  1.   

    persons[0] 这个还没有实例化,所以开始的那个肯定有错误, Person person = new Person(); 
    这个已经实例化了,所以不会报null exception, 楼主需要好好看下 java数组的特性
      

  2.   

    准确的应该说是Person[] persons = new Person[2]; 只是创建了对象数组的引用,没有创建对象。所以会报错
    而Person person = new Person(); 创建了对象,所以不会报错
      

  3.   


    Person[] persons = new Person[2]; 
    persons[0].personName = "tsh0"; 
    persons[0].personCode = "0"; 
    一二句间加persons[0]=new Person();
      

  4.   

    这个不是内部类问题,是数组赋值问题,有些东西就是要记得,这个不用,person是个对象,要先实例化,才能用。
      

  5.   

    Person[] persons = new Person[2]; 这句话只是开辟数组空间,放进去两个Person的空引用。并没有创建Person对象。
    后面用空引用当然就null了~