强哥说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属性获取数组的长度。
  • 对于多维数组,实际开发中建议不要使用超过三维的数组,否则会让你的程序难以理解和维护。



相关文章
|
6天前
|
Java 索引
杨老师课堂_Java教程第四篇之数组运用
杨老师课堂_Java教程第四篇之数组运用
15 0
|
4天前
|
Java 编译器 API
Java数组(如果想知道Java中有关数组的知识点,那么只看这一篇就足够了!)
Java数组(如果想知道Java中有关数组的知识点,那么只看这一篇就足够了!)
|
9天前
|
存储 Java
Java基础之数组
Java基础之数组
11 2
|
12天前
|
Java 索引
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
[笔记] 疯狂JAVA讲义(第3版)第4章 流程控制与数组
|
19天前
|
Java
(JAVA)找出数组中不重复或者重复的数字
(JAVA)找出数组中不重复或者重复的数字
|
20天前
|
算法 搜索推荐 Java
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
【经典算法】LeetCode 215. 数组中的第K个最大元素(Java/C/Python3实现含注释说明,Medium)
10 3
|
20天前
|
存储 Java 程序员
你真是了解Java数组吗?
你真是了解Java数组吗?
26 2
|
20天前
|
存储 算法 Java
【经典算法】 leetcode88.合并排序的数组(Java/C/Python3实现含注释说明,Easy)
【经典算法】 leetcode88.合并排序的数组(Java/C/Python3实现含注释说明,Easy)
12 1
|
20天前
|
存储 JavaScript 前端开发
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
【经典算法】LeetCode350:两个数组的交集 II(Java/C/Python3/JavaScript实现含注释说明,Easy)
11 1
|
1天前
|
机器学习/深度学习 算法 搜索推荐
Java数组(3)
Java数组(3)
6 0