总是java小问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 20:26:41
文件内容是这样的:
class Arraytest
{
public static void main(String[] args)
{
Point[] ps1=new Point[]{new Point(1,1),new Point(2,2),new Point(3,3)};
Point[] ps2=new Point[3];
System.arraycopy(ps1,0,ps2,0,ps1.length);
for(int i=0;i<ps2.length;i++)
{
System.out.println("x="+ps2[i].x+","+"y="+ps2[i].y);
}
}
class Point
{
int x,y;
Point(x,y)
{
this.x=x;
this.y=y;
}
}
}
主要是帮我解释下这句:
Point[] ps1=new Point[]{new Point(1,1),new Point(2,2),new Point(3,3)};
是什么意思,为什么要这样写啊????????
这里的new Point(1,1).....这些是什么意思?
如果说我这里:
class Point
{
int x,y;
Point(x,y)
{
this.x=x;
this.y=y;
}
}
不是用的构造函数,我是用这样写的方法:
class Point
{
int x,y;
public void pt(x,y)
{
this.x=x;
this.y=y;
}
}
如果我改成这样写,那么我又该怎么调用,写代码呢?

回答你第一个问题:
Point[] ps1=new Point[]{new Point(1,1),new Point(2,2),new Point(3,3)};
这个是把Ponit类的引用对象作为元素的数组,这个是数组的静态赋值,而里面的new Point(1,1)这个只是Point类的匿名对象.实际上在内存里是相当这样的
Point a = new Point(1,1); a的内存空间里就是放的是new Point(1,1),实际上数组用静态赋值的话,直接就可以分配内存空间的
补充的问题:
这里用构造函数的效率要高的多,如果改的话效率不高,程序还比较复杂,你这个程序是不是在运行时,报错:从上下文无法引入静态常量?
这个只要把main方法里的程序块放在Arrytest的构造函数里就可以了.因为静态的方法是无法访问非静态的,而main是静态方法,而内部类里面又不能有静态的声明,所以这个只能把它提出来,放在非静态的方法里面

调用Point的构造方法啊!生成的对象放入ps1数组中