日期:2014-05-20  浏览次数:20775 次

菜鸟关于一个数组的问题。谢谢
import java.lang.Math;
class Array{
 public Array(int i){
  System.out.println("int型数组"+i);
 }
 public Array(double i){
  System.out.println("double型数组"+i);
 }
 public Array(int i,int j){
  System.out.println("相乘数组"+i*j);
 }
}
public class shuzuone4

 
{
 public static void main(String[] args) {
  Array[] ArrayB=new Array[5];
  int [] ArrayC=new int[5];
  double[] ArrayD=new double[5];
  for(int i=0;i<ArrayC.length;i++){
  ArrayC[i]=i;
  ArrayB[i]=new Array(ArrayC[i]);
  }
  for(int i=0;i<ArrayD.length;i++){
  ArrayD[i]=Math.atan(i);
  ArrayB[i]=new Array(ArrayD[i]);
  }
  for(int i=0,j=0;i<ArrayC.length;i++,j++){
  ArrayB[i]=new Array(ArrayC[i],ArrayC[j]);
  }
 }
}
 
请问这个程序应该怎么理解,谢谢,希望能给出运算详细步骤,谢谢。
里面的:(1)Array(int i) 是什么意思?
  (2)for(int i=0;i<ArrayC.length;i++){
  ArrayC[i]=i; //第一步i=0 ArrayC[0]=0
  ArrayB[i]=new Array(ArrayC[i]); //ArrayB[0]=new Array(0) 这个怎么理解呢?
能够得到大家指点是我的荣幸。


------解决方案--------------------
(1)Array(int i) Array构造方法的一种。
 (2)ArrayB[0]=new Array(0) 将Array对象 存放到 ArrayB对象的这个数组里面去。
------解决方案--------------------
Array(int i) {}是 类Array的构造函数,这个构造函数接收一个整型的参数,当创建对象如new Array(4)时,就会调用该构造函数创建对象。
ArrayB[i]=new Array(ArrayC[i]);是在给数组B赋值,因为前面已经Array[] ArrayB=new Array[5],当执行ArrayB[i]=new Array(ArrayC[i])的时候,ArrayC[i]是一个整型的数,假设为10,则ArrayB[i]=new Array(10);
因为new Array(10)是创建一个Array对象,即B中每个元素的值是一个Array类型的对象。
------解决方案--------------------
import java.lang.Math;
class Array{
 public Array(int i){
System.out.println("int型数组"+i);
 }
 public Array(double i){
System.out.println("double型数组"+i);
 }
 public Array(int i,int j){
System.out.println("相乘数组"+i*j);
 }
}
public class shuzuone4

 
{
 public static void main(String[] args) {
Array[] ArrayB=new Array[5]; //有new 关键字都是实例化这个数组,就是为这个数组
//创建一个对象
int [] ArrayC=new int[5];
double[] ArrayD=new double[5];
for(int i=0;i<ArrayC.length;i++) //遍历这个数组,就是把数组中的元素赋值
{
ArrayC[i]=i; //给数组中的每一个元素赋值
ArrayB[i]=new Array (ArrayC[i]);//将数组C在数组B实例化的过程中,以参数的方式穿 //进去
}
for(int i=0;i<ArrayD.length;i++){ //这个上面的一样
ArrayD[i]=Math.atan(i);
ArrayB[i]=new Array(ArrayD[i]);
}
for(int i=0,j=0;i<ArrayC.length;i++,j++){
ArrayB[i]=new Array(ArrayC[i],ArrayC[j]);
}
 }
}

------解决方案--------------------
这个自定义class Array 是没有意义的,因为在这个类的内部完全没有做任何事情,

就这个问题本身而言:(1):Array(int i) 是什么意思?

Array(int i) 是自定义class Array 的构造方法,判断是否是构造方法就看有没有返回类型,没有返回类型的而且方法名与类名一致的就是构造方法。

2)for(int i=0;i<ArrayC.length;i++){
ArrayC[i]=i; //第一步i=0 ArrayC[0]=0
ArrayB[i]=new Array(ArrayC[i]); //ArrayB[0]=new Array(0) 这个怎么理解呢?

构造方法是用来创建该类对象的方法,前面说过Array(int i)是构造方法,参数是整形的,而ArrayC[i]); 是整形值,ArrayB[i]=new Array(ArrayC[i]); 就创建了一个Array类的对象并保存在ArrayB[i]=中。因为这句代码调用的是Array(int i)这个构造方法,所以会执行这个构造方法里的代码:输出
System.out.println("int型数组"+i);