强哥说Java--数组

简介: 强哥说Java--数组

Java 数组


1. 什么是数组


数组是相同类型的数据按照顺序组成的一种引用数据类型


Java 中有基本数据类型引用数据类型两种数据类型。数组就是引用数据类型。


2. 数组声明


在Java语言中,数组声明有两种语法:


  • 中括号跟在数据类型后DataType[] arrayName;
  • 中括号跟在数组名称后DataType arrayName[];


其中DataType是数组中要存放元素的数据类型,例如intString等,arrayName是数组名称,遵守变量的命名规范。

例如:

// 声明一个int类型的数组,名称为 firstIntArray:
int[] firstIntArray;  // 推荐写法
int firstIntArray[];
也可以修改数据类型,以生成其他类型的数组。实例如下:
// 声明一个float类型的数组:
float[] firstFloatArray;
// 声明一个字符串类型的数组:
String[] firstStringArray;


3. 数组创建


3.1 先声明再创建


int[] nums; //int nums2[];//1.声明数组
nums = new int [10];//2.创建一个数组
//3.给数组元素中赋值
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
nums[4]=5;
nums[5]=6;


3.2 声明时同时创建

//所创建的数组数据类型必须与其声明的数据类型相同。对于其他类型数组的创建
int[] b = new int[10];
//数组的创建使用new关键字,后面跟上一个空格+数据类型+中括号[],中括号中间是数组的长度,这里是必须指定的,它是一个整型的数字。实例如下:


4. 数组初始化


数组创建后,所有元素都初始化为默认值,整型数组的元素都为 0,浮点型都为 0. 0 ,布尔型都为 false。例如 int[] arr = new int[5];

除了数组的默认初始化,还有另外两种常见形式:


4.1静态初始化


静态初始化数组,就是声明的同时,给数组赋值。


DataType[] arrayName = {元素1, 元素2, 元素3, 元素n};
int[] arr = {1, 2, 3, 4, 5};

4.2动态初始化


动态初始化数组,即数组的声明以及创建是与数组的赋值操作分开进行的。

// 声明并创建数组,长度为3
int[] arr = new int[3];
// 给下标位置0赋值为1
arr[0] = 1;
// 给下标位置1赋值为2
arr[1] = 2;
// 给下标位置2赋值为3
arr[2] = 3;

5. 数组的操作


5.1 数组元素的引用


语法:数组名[下标],下标从0开始。有一个整型数组,引用其第一个元素,实例如下:

package com.caq.array;
public class TestArray {
    public static void main(String[] args) {
        double a[] = {1, 2.4, 555.3, 7764.4};
        double total = 0;
        for (int i = 0; i < a.length; i++) {
            total = a[i];
            System.out.println(total);
        }
    }
}

5.2 数组元素的修改


public class ArrayDemo1 {
    public static void main(String[] args) {
        // 初始化整型数组arr:
        int [] arr = {1, 2, 3};
        // 修改下标为1的元素为4
        arr[1] = 4;
        System.out.println("数组arr中,第二个元素为:" + arr[1]);
    }
}

5.3 获取数组长度


我们可以使用数组的内置属性length来获取数组的长度使用点操作符调用其内置属性arrayName.length。实例如下:


package com.caq.array;
public class TestArray {
    public static void main(String[] args) {
        // 初始化整型数组arr:
        int[] arr = {1, 2, 3};
        // 打印数组arr的长度:
        System.out.println("数组arr的长度为:" + arr.length);
    }
}

image.png

有时我们想引用数组中最后一个元素,由于数组下标从0开始,所以最后一个元素的下标为数组的长度减去1,这时可以结合length属性来进行引用。


package com.caq.array;public class TestArray {    public static void main(String[] args) {                // 初始化一个char类型的数组:        char[] charArr = {'q', 'w', 'e', 'r', 't'};        // 引用最后一个元素:        char lastElement = charArr[charArr.length - 1];        System.out.println("charArr数组的最后一个元素为:" + lastElement);            }}

image.png


5.4 数组的迭代


5.4.1 循环赋值


package com.caq.array;public class TestArray {    public static void main(String[] args) {        int[] array1 = new int[10];        for (int i = 0; i < array1.length; i++) {            array1[i] = i + 1;            System.out.print(array1[i]+ "\t");        }    }}

image.png


5.4.2 增强 for 循环


for(变量声明: 数组或列表) {    // 循环体}

public class TestArray {    public static void main(String[] args) {        // 初始化字符串数组 words        String[] words = {"a ", "b ", "c"};        for(String word: words) {            System.out.print(word);        }    }}

image.png


5.4.3 数组实例


1.求100以内偶数的和


package com.caq.array;public class TestArray {    public static void main(String[] args) {        int total=0;        int[] words = new int[100];        for (int i = 0; i < words.length; i++) {            words[i] = i + 1;            if (words[i] % 2 == 0){                total += words[i];            }        }        System.out.println(total);    }}

image.png


2.求数组内最大的数


package com.caq.array;public class TestArray {    public static void main(String[] args) {        int[] maxArray = {1,2,100,20,400,300};        int max = maxArray[0];        for (int i = 0; i < maxArray.length; i++) {            if (maxArray[i] > max){                max = maxArray[i];            }        }        System.out.println(max);    }}

image.png


6. 多维数组


在Java中,多维数组也是非常常用的数据结构,下面以二维数组为例,介绍二维数组的声明、创建、初始化和引用。


6.1 声明


二维数组有 3 种声明方式:

  • 中括号跟在数据类型后DataType[][] arrayName;(最推荐写法)
  • 中括号跟在数组名后DataType arrayName[][];
  • 中括号一个在前,一个在后DataType[] arranName[];


// 声明一个整型的二维数组int[][] intArray;// 声明一个单精度浮点型的二维数组float floatArray[][];// 声明一个char类型的二维数组char[] charArray[];


6.2创建


二维数组可以想象成一个存放数据的表格,二维数组的创建和一维数组相似。可以声明数组的同时创建:

javaDataType[][] arrayName = new int[行数][列数];DataType[][] arrayName;arrayName = new DataType[行数][列数];

// 声明并创建一个2行3列的数组int[][] intArray = new int[2][3];// 声明一个单精度浮点型的二维数组float floatArray[][];// 创建一个3行3列的二维数组floatArray = new float[3][3];

在创建数组的时候,我们也可以先不指定列的数量,再在后面进行逐行创建。

实例:

// 创建一个3行的二维数组int intArray[][] = new int[3][];// 第一行3列intArray[0] = new int[3];// 第二行2列intArray[1] = new int[2];// 第三行1列intArray[2] = new int[1];


6.3 初始化


多维数组也有静态初始化和动态初始化之分,对于静态初始化,一维数组使用一对大括号{}包含其元素,而二维数组的初始化可以使用两对大括号包含行数和列数。实例如下:

// 创建一个3行2列的二维数组int[][] intArray = {{1,2}, {3,4}, {5,6}};代码块预览复制12

动态初始化实例如下:

// 声明并创建一个数组int intArray[][] = new int[2][3];// 为第1行第1列的元素赋值:intArray[0][0] = 10;代码块1234

Tips:为数组赋值时,要注意数组的下标索引是从0开始的。

一维数组可以通过length属性获取元素个数,同样二维数组的行数和列数也可以使用length属性获取。实例如下:

public class ArrayDemo6 {    public static void main(String[] args) {        // 初始化一个3行2列的二维数组        int[][] intArray = {{1,2,7}, {3,4}, {5,6}};        // 获取intArray的行数        System.out.println("intArray的行数为:" + intArray.length);        // 获取intArray第1行的列数        System.out.println("intArray第一行的列数为:" + intArray[0].length);    }}


6.4 二维数组的迭代


一维数组使用单层for循环就可以遍历,二维数组的遍历需要使用双层嵌套for循环。

java

复制代码

package com.caq.array;public class ArrayDemo03 {    public static void main(String[] args) {        //多维数组        int[][] array = {{1, 2}, {2, 3}, {4, 5}};//二维        for (int i = 0; i < array.length; i++) {            for (int j = 0; j < array[i].length; j++) {                System.out.print(array[i][j] + "\t");            }        }    }}

image.png


7. 小结


  • 引用数据类型它在创建时,会在内存中开辟一个连续的空间
  • 数组是同一数据类型的集合。可以使用数组下标来引用数组元素,数组元素的下标都是从0开始,使用下标不要超出范围,否则会抛出异常。
  • 可以使用length属性获取数组的长度。
  • 对于多维数组,实际开发中建议不要使用超过三维的数组,否则会让你的程序难以理解和维护。



相关文章
|
3天前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
3天前
|
存储 Java 索引
Java基础(六):数组
Java基础(六):数组
Java基础(六):数组
|
1天前
|
存储 Java C++
Java数组:静态初始化与动态初始化详解
本文介绍了Java中数组的定义、特点及初始化方式。
25 12
|
3月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
42 4
|
3月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
52 2
|
3月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
115 2
|
3月前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
64 9
|
3月前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
32 3
|
3月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
35 6
|
3月前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
41 1