数组初始化

1.数组的定义

 1. int[]  a1;(这一种格式或许更合理,毕竟它表明类型是“一个int型数组”)
 2. int  a1[];

2.数组的创建及初始化
1、静态初始化: 程序员在初始化数组时为数组每个元素赋值;

2、动态初始化: 数组初始化时,程序员只指定数组的长度,由系统为每个元素赋初值。

代码如下:
public class ArrayInit {
public static void main(String[] args) {

  //静态初始化数组:方法一  
        String cats[] = new String[] {  
                "Tom","Sam","Mimi"  
        };  

        //静态初始化数组:方法二  
        String dogs[] = {"Jimmy","Gougou","Doggy"};  

        //动态初始化数据  
        String books[] = new String[2];  
        books[0] = "Thinking in Java";  
        books[1] = "Effective Java";  

        System.out.println(cats.length);  
        System.out.println(dogs.length);  
        System.out.println(books.length);  
    }  
}
int[] a1 = {1,2,3,4,5}是一种特殊的初始化表达式,它必须在创建数组的地方出现,在这种情况下存储空间的分配(等价于使用new)将由编译器负责。
数组创建的时候,数组中的基本数据类型会自动初始化为空值(对于数字和字符是0,对于布尔值是false)

3.数组的使用

    public class ArrayInit {
    public static void main(String[] args) {
        Integer[] a = { 
                new Integer(1), 
                new Integer(2), 
                3, 

        };
        Integer[] b = new Integer[] { 
                new Integer(1), 
                new Integer(2), 
                3, 
        };
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));
    }
}

在这两种形式中,初始化列表的最后一个逗号都是可选的(这一特性使维护长列表变得更容易)

4.可变列表

public class NewVarArgs {

    static void printArray(Object... args) {

        for (Object obj : args)

            System.out.print(obj + " ");

        System.out.println();

    }

    public static void main(String[] args) {

        printArray(new Integer(47), new Float(3.14), new Double(11.11));

        printArray(47, 3.14F);

        printArray("one", "two", "three");

//      printArray(new A(), new A(), new A());

        printArray((Object[])new Integer[]{1,2,3,4});

        printArray();

    }
}
  1. 有了可变列表,就不用显示的编写数组语法了,因为当你指定参数时,编译器实际上会为你填充数组,你获取到的仍然是个数组,这就是为什么可以用foreach来迭代数组的原因。
  2. 可选参数列表与自动包装机制可以和谐共处
    这里写图片描述
    3.可变参数列表传0个参数是可以的。
    4.可变参数列表使重载过程变得复杂。
class NewVarArgs2{
    static void f(float i,Character... args){
        System.out.println("first");
    }
    static void f(Character... args){
        System.out.println("second");
    }
    public static void main(String[] args) {
        f(1,'a');
        f('a','b');//编译出错
    }
}

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值