Java数组

一维数组

 对于Java语言的基本数据类型,一个变量只能存储单一的值。但在实际运用中,通常需要使用一种表示数据集合的类型来实现程序中的复杂逻辑。这是就用到了数组,Java中的数组包括一维数组、二维数组、多维数组以及不规则数组。在数组中,各个变量通过下标来控制。数组的下标从0开始。

数组的声明

 数组在使用前必须先声明
语法:

//第一种
数据类型[] 数组名;
//第二种
数组类型 数组名[];

 数组的声明和基本数据类型的声明类似,只不过添加了中括号来表示声明的是一个数组。其中,第一种声明数组的方式更符合面向对象的程序设计规则,建议在实际编程中使用。

数组的定义

 需要注意的是,语句int[] results;只具有声明的作用,并未将results定义为真正的数组,定义数组应使用关键字new来实现。

语法:

数据类型[] 数组名 = new 数据类型[长度];
/*
* 语法说明:
* 1.关键字new用于为数组分配内存空间
* 2长度是指数组的容量,在定义数组时必须指定长度。
* 注意:
* 1.数组名的命名规则与变量名相同。
* 2.[]是数组的标志,不能用其他符合代替。
* 3.在Java语言中,不能在声明数组时指定数组的长度,而应该在定义时指定。
* 如:
* int x[5]; //编译时将出现错误。
* int[] x = new int[5]; //正确
*/

数组的初始化

数组的默认初始化
 数组定义之后,就确定了数组的长度。同时,数组中的元素会被赋予一个默认的初始值。默认初始值根据数组中元素的类型来确定。如:数组中的int类型元素时默认初始值是0,char类型的默认初始值是“\u0000”、Boolean类型的默认初始值是false,而引用类型的默认初始值是null。

数组的赋值初始化

 如果我们希望在定义数组的时候,给数组中的元素赋予非0的初始值,那么就需要对数组进行赋值初始化。在Java程序中,存在创建数组并同时赋予元素值得简写形式,如:

int[] array = {1,2,3,4,5}

这种赋值初始化得形式,甚至不需要new关键字,右边{}内元素得个数就说明了数组得长度。另外还有一种赋值初始化的形式,如:

//这种赋值初始化使用new关键字,定义得更加完美。
int[] array = new int[]{1,2,3,4,5}
//数组一旦创建,长度将无法再改变。

数组的赋值

单个赋值
 数组得初始化可以使用{}来进行整天赋值,可是数组一旦定义,就不能再进行整体赋值了。

示例:

/**
 * 数组单个赋值
 * */
public class Demo_one {
    public static void main(String[] args){
       int[] intArray = new int[5];
       //intArray = {1,2,3,4,5},错误,提示非法得表达式开始。
       //此时就需要对数组元素逐个进行赋值
        intArray[0] = 5;
        intArray[1] = 4;
        intArray[2] = 3;
        intArray[3] = 2;
        intArray[4] = 1;
        System.out.println(intArray[0]+","+intArray[1]+","+intArray[2]+","+intArray[3]+","+intArray[4]);
    }
}

循环赋值
 逐一赋值的方式效率是比较低的。如果数组有成百上千个元素,那么就需要逐一赋值成千上百次,这样数组的优势就体现不出来。事实上,数组最常用的赋值方式是循环赋值,依靠for语句进行逐个遍历赋值。

示例:

/**
 * 使用for循环进行循环赋值和输出
 * */
public class Demo_one {
    public static void main(String[] args){
       int[] intArray = new int[5];
       for (int i=1; i<6; i++){
           intArray[i-1] = i*2;
       }
        for (int n:intArray) {
            System.out.print(n+"\t");
        }
        System.out.println();
    }
}

效果图如下:
在这里插入图片描述

使用数组实现排序算法

冒泡排序:
 冒泡排序是指依次比较相邻的二个数,将较大的数放在前面,较小的数放在后面。

示例:

/**
 * 使用冒泡排序
 * */
public class Demo_one {
    public static void main(String[] args){
       int[] array = new int[]{5,4,8,9,2,1,7,2,5,4};
       System.out.println("没有排序之前的数组:");
        for (int n:array) {
            System.out.print(n+"\t");
        }
        System.out.println();
        //冒泡排序的主要实现逻辑
        for (int i=0; i<array.length-1; i++){
            for (int j=0; j<array.length-1-i; j++){
                int temp = 0;
                if(array[j] > array[j+1]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
        //排序后,数组结构改变
        System.out.print("排序后的数据是:");
        for (int n:array) {
            System.out.print(n+"\t");
        }
        System.out.println();
    }
}

效果图如下:

在这里插入图片描述使用工具类Arrays进行数组排序

示例:

import java.util.Arrays;
/**
 * 使用工具类Arrays进行数组排序
 * */
public class Demo_one {
    public static void main(String[] args){
       int[] array = new int[]{5,4,8,9,2,1,7,2,5,4};
       System.out.println("没有排序之前的数组:");
        for (int n:array) {
            System.out.print(n+"\t");
        }
        System.out.println();
        //使用工具类Arrays进行数组排序
        Arrays.sort(array);
        System.out.print("排序后的数据是:");
        for (int n:array) {
            System.out.print(n+"\t");
        }
        System.out.println();
    }
}

效果图如下:
在这里插入图片描述

二维数组

 一维数组并不能解决Java程序中所有的问题,有时还需要使用二个或更多的下表来确定表格中的数据,如:生活中常见的乘法表、食物和相应的营养值、区域人口表等。这就涉及二维数组的应用。

二维数组的声明

语法:

1.数据类型[][] 数组名;
2.数据类型 数组名[][];
3.数据类型[] 数组名[];

二维数组的定义

 与一维数组类似,二维数组中语句int x[ ][ ],只具有声明的作用,并未将x定义为正在的二维数组。二维数组也使用操作符new来定义。如:

int[][] x;
x = new int[2][3];
//也可以在声明数组类型的同时进行定义
int[][] x = new int[2][3];

二维数组的初始化

语法:

//第一种
int[][] x = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
//第二种
int[][] x = {{1,2,3},{4,5,6},{7,8,9}};

二维数组的遍历

 二维数组的实质是一维数组的数组,在进行遍历访问时,可以使用嵌套循环来遍历。

示例:

/**
 * 遍历二维数组
 * */
public class Demo_one {
    public static void main(String[] args){
       int[][] intArray = new int[3][4];
       for (int i=0; i<3; i++) {
           for (int j = 0; j < 4; j++) {
               intArray[i][j] = i + j;
           }
       }
           for (int[] array: intArray) {
               for (int n: array) {
                   System.out.print(n+"\t");
               }
               System.out.println();
           }
       }
}

效果图如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值