一维数组的使用

 一维数组的使用

一维数组的声明

格式:

//推荐
元素的数据类型[] 一维数组的名称;
​
//不推荐
元素的数据类型  一维数组名[];

举例:

int[] arr;
int arr1[];
double[] arr2;
String[] arr3;  //引用类型变量数组

数组的声明,需要明确:

(1)数组的维度:在Java中数组的符号是[],[]表示一维,[][]表示二维。

(2)数组的元素类型:即创建的数组容器可以存储什么数据类型的数据。元素的类型可以是任意的Java的数据类型。例如:int、String、Student等。

(3)数组名:就是代表某个数组的标识符,数组名其实也是变量名,按照变量的命名规范来命名。数组名是个引用数据类型的变量,因为它代表一组数据。

举例:

public class ArrayTest1 {
    public static void main(String[] args) {
        //比如,要存储一个小组的成绩
        int[] scores;
        int grades[];
//        System.out.println(scores);//未初始化不能使用
​
        //比如,要存储一组字母
        char[] letters;
​
        //比如,要存储一组姓名
        String[] names;
​
        //比如,要存储一组价格
        double[] prices;
​
    }
}

注意:Java语言中声明数组时不能指定其长度(数组中元素的个数)。 例如: int a[5]; //非法

 一维数组的初始化

 静态初始化
  • 如果数组变量的初始化和数组元素的赋值操作同时进行,那就称为静态初始化。

  • 静态初始化,本质是用静态数据(编译时已知)为数组初始化。此时数组的长度由静态数据的个数决定。

  • 一维数组声明和静态初始化格式1:

    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,...};
    ​
    或
        
    数据类型[] 数组名;
    数组名 = new 数据类型[]{元素1,元素2,元素3,...};
    • new:关键字,创建数组使用的关键字。因为数组本身是引用数据类型,所以要用new创建数组实体。

例如,定义存储1,2,3,4,5整数的数组容器。

int[] arr = new int[]{1,2,3,4,5};//正确
//或
int[] arr;
arr = new int[]{1,2,3,4,5};//正确
  • 一维数组声明和静态初始化格式2:

数据类型[] 数组名 = {元素1,元素2,元素3...};//必须在一个语句中完成,不能分成两个语句写

例如,定义存储1,2,3,4,5整数的数组容器

int[] arr = {1,2,3,4,5};//正确
​
int[] arr;
arr = {1,2,3,4,5};//错误

举例:

public class ArrayTest2 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};//右边不需要写new int[]
​
        int[] nums;
        nums = new int[]{10,20,30,40}; //声明和初始化在两个语句完成,就不能使用new int[]
​
        char[] word = {'h','e','l','l','o'};
​
        String[] heros = {"袁隆平","邓稼先","钱学森"};
​
        System.out.println("arr数组:" + arr);//arr数组:[I@1b6d3586
        System.out.println("nums数组:" + nums);//nums数组:[I@4554617c
        System.out.println("word数组:" + word);//word数组:[C@74a14482
        System.out.println("heros数组:" + heros);//heros数组:[Ljava.lang.String;@1540e19d
    }
}
 动态初始化

数组变量的初始化和数组元素的赋值操作分开进行,即为动态初始化。

动态初始化中,只确定了元素的个数(即数组的长度),而元素值此时只是默认值,还并未真正赋自己期望的值。真正期望的数据需要后续单独一个一个赋值。

格式:

数组存储的元素的数据类型[] 数组名字 = new 数组存储的元素的数据类型[长度];
​
或
​
数组存储的数据类型[] 数组名字;
数组名字 = new 数组存储的数据类型[长度];
  • [长度]:数组的长度,表示数组容器中可以最多存储多少个元素。

  • 注意:数组有定长特性,长度一旦指定,不可更改。和水杯道理相同,买了一个2升的水杯,总容量就是2升是固定的。

举例1:正确写法

int[] arr = new int[5];
​
int[] arr;
arr = new int[5];
​

举例2:错误写法

int[] arr = new int[5]{1,2,3,4,5};//错误的,后面有{}指定元素列表,就不需要在[]中指定元素个数了。

 一维数组的使用

 数组的长度
  • 数组的元素总个数,即数组的长度

  • 每个数组都有一个属性length指明它的长度,例如:arr.length 指明数组arr的长度(即元素个数)

  • 每个数组都具有长度,而且一旦初始化,其长度就是确定,且是不可变的。

 数组元素的引用

如何表示数组中的一个元素?

每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引(index)或下标,可以通过数组的索引/下标访问到数组中的元素。

数组名[索引/下标]

数组的下标范围?

Java中数组的下标从[0]开始,下标范围是[0, 数组的长度-1],即[0, 数组名.length-1]

数组元素下标可以是整型常量或整型表达式。如a[3] , b[i] , c[6*i];

举例

public class ArrayTest3 {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
​
        System.out.println("arr数组的长度:" + arr.length);
        System.out.println("arr数组的第1个元素:" + arr[0]);//下标从0开始
        System.out.println("arr数组的第2个元素:" + arr[1]);
        System.out.println("arr数组的第3个元素:" + arr[2]);
        System.out.println("arr数组的第4个元素:" + arr[3]);
        System.out.println("arr数组的第5个元素:" + arr[4]);
​
        //修改第1个元素的值
        //此处arr[0]相当于一个int类型的变量
        arr[0] = 100;
        System.out.println("arr数组的第1个元素:" + arr[0]);
    }
}

 一维数组的遍历

将数组中的每个元素分别获取出来,就是遍历。for循环与数组的遍历是绝配。

举例1

public class ArrayTest4 {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,3,4,5};
        //打印数组的属性,输出结果是5
        System.out.println("数组的长度:" + arr.length);
​
        //遍历输出数组中的元素
        System.out.println("数组的元素有:");
        for(int i=0; i<arr.length; i++){
            System.out.println(arr[i]);
        }
    }
}

举例2

public class ArrayTest5 {
    public static void main(String[] args) {
        int[] arr = new int[5];
​
        System.out.println("arr数组的长度:" + arr.length);
        System.out.print("存储数据到arr数组之前:[");
        for (int i = 0; i < arr.length; i++) {
            if(i==0){
                System.out.print(arr[i]);
            }else{
                System.out.print("," + arr[i]);
            }
        }
        System.out.println("]");
​
        //初始化
        /* 
        arr[0] = 2;
        arr[1] = 4;
        arr[2] = 6;
        arr[3] = 8;
        arr[4] = 10;
        */
​
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (i+1) * 2;
        }
​
        System.out.print("存储数据到arr数组之后:[");
        for (int i = 0; i < arr.length; i++) {
            if(i==0){
                System.out.print(arr[i]);
            }else{
                System.out.print("," + arr[i]);
            }
        }
        System.out.println("]");
    }
}

数组元素的默认值

数组是引用类型,当我们使用动态初始化方式创建数组时,元素值只是默认值。例如:

public class ArrayTest6 {
    public static void main(String argv[]){
        int a[]= new int[5]; 
        System.out.println(a[3]); //a[3]的默认值为0
    }
} 

对于基本数据类型而言,默认初始化值各有不同。

对于引用数据类型而言,默认初始化值为null(注意与0不同!)

public class ArrayTest7 {
    public static void main(String[] args) {
        //存储26个字母
        char[] letters = new char[26];
        System.out.println("letters数组的长度:" + letters.length);
        System.out.print("存储字母到letters数组之前:[");
        for (int i = 0; i < letters.length; i++) {
            if(i==0){
                System.out.print(letters[i]);
            }else{
                System.out.print("," + letters[i]);
            }
        }
        System.out.println("]");
​
       //存储5个姓名
        String[] names = new String[5];
        System.out.println("names数组的长度:" + names.length);
        System.out.print("存储姓名到names数组之前:[");
        for (int i = 0; i < names.length; i++) {
            if(i==0){
                System.out.print(names[i]);
            }else{
                System.out.print("," + names[i]);
            }
        }
        System.out.println("]");
    }
}

相关推荐

  1. 学习

    2024-03-26 21:30:01       57 阅读
  2. 找重复数据(

    2024-03-26 21:30:01       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 21:30:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 21:30:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 21:30:01       82 阅读
  4. Python语言-面向对象

    2024-03-26 21:30:01       91 阅读

热门阅读

  1. 云服务器配置 docker-spark

    2024-03-26 21:30:01       41 阅读
  2. 【力扣】392.判断子序列

    2024-03-26 21:30:01       42 阅读
  3. ChatGPT:实现高效论文写作的秘密武器

    2024-03-26 21:30:01       43 阅读
  4. 达梦数据库 分区表的维护

    2024-03-26 21:30:01       62 阅读
  5. MySQL: 数据类型

    2024-03-26 21:30:01       44 阅读
  6. SQL的INTERSECT与MySQL模拟INTERSECT

    2024-03-26 21:30:01       39 阅读
  7. 函 数 篇

    2024-03-26 21:30:01       38 阅读
  8. php 快速入门(二)

    2024-03-26 21:30:01       43 阅读
  9. Kotlin协程知识点概述

    2024-03-26 21:30:01       35 阅读
  10. Linux线程补充——周边问题

    2024-03-26 21:30:01       32 阅读
  11. 【漏洞复现】NotificationX SQL注入漏洞(CVE-2024-1698)

    2024-03-26 21:30:01       45 阅读