3.2 对象数组

·当数组的元素类型是类的时候,数组的每一个元素其实只是对象的管理者而不是对象本身。因此,仅仅创建数组并没有创建其中的每一个对象。

当我们定义了一个整数

int  i = 12;   这是一个确切的数

当我们定义一个字符串

String s ;


并没有对他赋值 s 指的是另一个对象,它只是对象的管理者

同样我们定义一个整数数组

int [10 ]      它是由十个确实存在的整数组成

String [10]    字符串数组,10个位置指向存储字符的位置,字符串数组存储的是对象的管理者

对象数组中的每个元素都是对象的管理者,而非对象本身。

也就是说,当你创建了一个对象数组,并不是创建了那个类的对象,而是创建了那个类的

管理者,换句话说,当你创建了一个数组,那些对象还没有呢,你还要想办法把每一个对象创建出来,那里面的东西才有用。

这就是对象数组和普通数组所不同的地方。

上面说了普通数组和普通数组,下面我们讨论一下,如何遍历对象数组呢?

创建成员函数

public void set(int i){
    this.i = i;
}

public int get(){
    return i;
}

我们然后对对象数组赋予对象

public  static  mian(String[] args){
    Value[] a = new Value[10];
    for( int i = 0; i<a.length; i++){
        a[i] = new Value();
        a[i].set(i);

    }
    for(Value v: a){
        System.out.println(v.get());
    }
}

我们这里每对一个对象数组元素赋值,实际上是新创建了一个对象,那对象数组就是数组的管理者,而非对象本身。

然后我们利用 for -each 循环来输出对象数组里面管理的对象

其实也可以用在容器里面

public static void main(String[] args){
    ArrayList<String> a = new ArrayLiat<String>;
    a.add("first");
    a.add("second");
    for( String s : a){
        System.out.println(s);
    }
}

讨论:

如何设计能传递任意数量参数的函数?

(另外,除了用对象数组之外,也可以搜搜看java本身就支持任意数量参数的函数)

答:

public static double max(double... values) {

double max = Double.MIN_VALUE;

for (double v : values)

if (v > max)

max = v;

return max;

}

在形式参数的地方 使用了 double... values ,需要注意的时,采用这种方式values必须作为最后一个参数

printf()在实现时就采用了这种方式。

调用方式:

Class.max(1.2,5.2,6.5) //可接受任意数量的double值

Class.max(new double[]{1.2,5.2,6.5}) //等价

double[] d = {1.2,5.2,6.5};

Class.max(d) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值