07-一维数组

07-一维数组

  • 7.1 引言

    • 单个的数组变量可以引用一个大的数据集合。
  • 7.2 数组的基础知识

    一旦数组被创建,他的大小是固定的。使用一个数组引用变量和下标来访问数组中的元素。

    • 7.2.1 声明数组变量
      • 为了在程序中使用数组,必须声明一个引用数组的变量,并指明数组的元素类型。下卖弄是声明数组变量的语法:
        elementType[] arrayRefVar;
        //或者
        elementType arrayRefVar[];//是允许这样的,但是不是最好的方式
        
      • elementType可以是任意数据类型,但是数组中所有的元素都必须具有相同的数据类型。
      • 也可以用elementType arrayRefVar[]声明数组变量。这种来自c/c++语言的风格被Java采纳以适用于c/c++程序员。推荐使用elementType[] arrayRefVar。
    • 7.2.2 创建数组
      • 不同于声明基本数据类型变量,声明一个数组变量时并不给数组分配任何内存空间。它只是创建一个对数组的引用的存储位置。如果变量不包含对数组的引用,那么这个变量的值为null。除非数组已经被创建,否则不能给他分配任何元素。声明数组变量之后,可以使用下面的语法用new操作符创建数组,并且将它的引用赋给一个变量:
        arrayRefVar = new elementType[arraySize];
        
      • 这条语句做了两件事:
        • 1、使用new elementType[arraySize]创建了一个数组;
        • 2、把这个新创建的数组的引用赋值给变量arraySize。
      • 声明一个数组变量、创建数组、将数组引用赋值给变量这三个步骤可以合并在一条语句里。
        elementType[] arrayRefVar = new elementType[arraySize];
        //或者
        elementType arrayRefVar[] = new elementType[arraySize];
        
      • 一个数组变量看起来似乎是存储了一个数组,但实际上他存储的是指向数组的引用。严格的讲,一个数组变量和一个数组是不同的,但多数情况下他们的差别是可以忽略的。因此,为了简化,通常常可以说myList是一个数组,而不用更长的陈述:myList是一个含有double型元素数组的引用变量。
    • 7.2.3 数组大小和默认值
      • 当给数组分配空间时,必须指定该数组能够存储的元素个数,从而确定数组大小。创建数组之后就不能再修改它的大小了。可以使用arrayRefVar.length得到数组的大小。
      • 当创建数组后,他的元素呗赋予默认值,数值型基本数据类型的默认值为0,char型的默认值为‘\u0000’,boolean型的默认值为false。
    • 7.2.4 访问数组元素
      • 数组元素可以通过下标访问。数组下标是基于0的,也就是说,其范围从0开始到arrayRefVar.length-1结束。数组中的每个元素都可以使用下面的语法表示,称为下标变量:
        arrayRefVar[index];
        
    • 7.2.5 数组初始化简写方式
      • Java有一个简捷的标记,称作数组初始化简写方式,他使用下面的语法将声明数组、创建数组和初始化数组结合到一条语句中:
        elementType[] arrayRefVar = {
                 value0,value1,...,valuek};
        
      • 数组初始化简写方式中不使用操作符new。使用数组初始化简写方式时,必须将声明、创建和初始化数组都放在一条语句中。
    • 7.2.6 处理数组
      • 处理数组元素时,经常会用到for循环,理由如下:
        • 数组中所有元素都是同一类型的。可以使用循环以同样的方式反复处理这些元素。
        • 由于数组的大小是已知的,所以很自然的就使用for循环。
      • 1、使用输入值初始化数组
        double[] myList = new double[4];
                java.util.Scanner input = new java.util.Scanner(System.in);
                System.out.print("Enter " + myList.length + " values: ");
                for (int i = 0;i < myList.length;i++)
                    myList[i] = input.nextDouble();
        
      • 2、使用随机数初始化数组
        for (int i = 0;i < myList.length;i++){
                 
                    myList[i] = Math.random() * 100;
                }
        
      • 3、显示数组
        char[] city = {
                 'D','a','l','l','a','s'};
                System.out.println(city);
        
      • 4、对所有元素求和
        double total = 0;
                for (int i = 0;i < myList.length;i++){
                 
                    total += myList[i];
                }
        
      • 5、找出最大元素
        double max = myList[0];
                for (int i = 0;i < myList.length;i++){
                 
                    if (myList[i] > max)max = myList[i];
                }
        
      • 6、找出最大元素的最小下标值
        double max = myList[0];
                int indexOfMax = 0;
                for (int i = 1;i < myList.length;i++){
                 
                    max = myList[i];
                    indexOfMax = 1;
                }
        
      • 7、随机打乱
        for (int i = 0;i < myList.length - 1;i++){
                 
                    int j = (int)(Math.random() * myList.length);
                    double temp = myList[i];
                    myList[i] = myList[j];
                    myList[j] = temp;
                }
        
      • 8、移动元素
        double temp = myList[0];
                for (int i = 1;i < myList.length;i++){
                 
                    myList[i - 1] = myList[i];
                }
                myList[myList.length - 1] = temp;
        
      • 9、简化编码
        String[] months = {
                 "January","Februry",....,"December"};
                System.out.print("Enter a month number (1 to 12): ");
                int monthNumber = input.nextInt();
                System.out.println("The month is " + months[monthNumber - 1]);
        
    • 7.2.7 foreach循环
      • Java支持一个简便的for循环,称为foreach循环,即不使用下标变量就可以顺序的遍历整个数组。下面的代码就可以显示数组myList的所有元素:
        for(double e : myList){
                 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值