前言:最近这两天在csdn论坛经常看到有人因为自定义的数据的实例化而导致报NullPointerException异常,原因只是因为没有把数组实例化,因为它是“自定义”的,那么必须得初始化才能调用属性和方法。下面简单动手实例自定义数组。
1、自定义一维数组:(可能比较常见的就是在Swing中应用的,就举Swing的例子)
import java.awt.*;
import javax.swing.*;
public class OA extends JFrame{
JPanel jp=(JPanel)this.getContentPane();
private JTable[] jt;//定义全局一维数组
public OA()
{
jp.setLayout(null);
jt=new JTable[256]; //初始化数组
for(int i=0;i<jt.length;i++)
{
jt[i]=new JTable(); //实例化数组
}
int k=0,j=0;
for(int i=0;i<jt.length;i++,j++)
{
final int g=i;
if(j%16==0)
{
k++;
}
int x=Math.abs(j%16);
int marginwidth=x*5+20*x;
int marginheight=(k-1)*5+20*(k-1);
jt[i].setBounds(new Rectangle(marginwidth,marginheight, 20, 20));
jp.add(jt[i]);
}
}
public static void main(String[] args) {
OA frame=new OA();
frame.setSize(800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
2、二维数组“动态”实例化:
Student team[][];//定义二维数组
team=new Student[3][]; //初始化二维数组
for(int i=0;i<team.length;i++)
{
team[i]=new Student[i+1]; //这里很重要,不可缺少.分配空间
team[i][0]=new Student();//实例化自定义二维数组
}