Java数组

一.数组的基本用法

1、数组的定义

以下有几种定义数组的方式
(1)数据类型[ ] 数组名称 = {初始化数据};
示例如下:

int[] arr1 = {1,2,3};

(2)数据类型[ ] 数组名称 = new 数据类型[ ]
示例如下:

//初始化一个{0,0,0}的数组
int[] arr2 = new int[3];

(3)数据类型[] 数组名称 = new 数据类型[ ] {初始化数字}
示例如下:

int [] arr3 = new int[]{4,5,6};

其中第一种定义数组的方式是最常用的


2、数组的基本使用

以数组 int arr[] = {1,2,3}; 作为示例

(1)获取数组的长度

语法为: 数组名.length
例如 arr.length
返回的是数组的长度,此处返回为3

(2)访问数组的元素

语法为:数组名[序号] = 值;
例如 arr[0] = 100;
把原来1 的值改成 100

(3)下标越界

下标访问操作的有效范围为[0,length-1],若超出访问的范围就会发生下标越界异常
例如 要打印arr[100],就会发生下标越界的异常

(4)遍历打印数组

①for循环

for (int i = 0; i < arr.length; i++) {
	System.out.print(arr[i] + " ");
}

②for-each遍历数组(增强for循环)

for (int i : arr) {
	System.out.print(arr[i] + " ");
}

第一种和第二种的区别主要是:for循环可以拿到数组的下标,for-each拿不到数组的下标

③借助Java操作数组的工具类Arrays
用之前先导包 import java.util.Arrays;

//将参数的数组以字符串的形式进行输出
String ret = Array.toString(arr);
Ststem.out.println(ret);


二.数组作为方法的参数

Java里面的数组属于对象,当我们定义一个数组的时候,如 int[] arr1 = {1,2,3,4,5,6};
其中它的数组名 arr1 是引用变量(引用 指向 一个对象)存放在“栈”里面,它保存的是指向对象的地址,{1,2,3,4,5,6}是一个对象,它放在“堆”里面

画图理解一下:
在这里插入图片描述

而 int[] arr2 = null; 这个引用 不指向 任何的对象,不会为其分配内存


参数传数组类型的实例:

public static void main(String[] args) {
	int arr = {1,2,3,4,5,6};
	print(arr);//按引用传递,也可以叫做按值传递,传递的值是数组的地址
}

public static void print(int[] arr) {
	for(int i = 0; i < arr.length; i++){
		System.out.print(arr[i] + " ");
	}
	System.out.println();
}


三.二维数组

1、定义方式

(1) 数据类型[ ][ ] 数组名称 = {初始化数据};
示例如下:

int[][] arr1 = {{1,2,3},{4,5,6}};

(2)数据类型[ ][ ] 数组名称 = new 数据类型[ ][ ]{初始化数据};
示例如下:

int [][] arr2 = new int[][]{{1,2,3},{4,5,6}};

(3)数据类型[ ][ ] 数组名称 = new 数据类型[行数][列数 ];
示例如下:

int [][] arr3 = new int[2][3];

2、打印二维数组

二维数组实际上是一个特殊的一维数组,在Java里面可以体现得淋漓尽致
例如,int[ ][ ] arr = {{1,2,3},{4,5,6}}; 是以下图的方式保存的
在这里插入图片描述
所以其打印的方式为:

import java.util.Arrays;

public class Main{
	public static void main(String[] args){
		int [][] arr = {{1,2,3},{4,5,6}};
		
		//验证
		System.out.println(arr.length);
		System.out.println(arr[0].length);
		
		//(1)for循环打印数组
		for(int i = 0; i < arr.length; i++){
			for(int j = 0; j < arr[i].length; j++){
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
		System.out.println("===============");

		//(2)for-each打印数组
		for (int[] ret : arr){
			for(int x : ret){
				System.out.println(x + " ");
			}
		}
		System.out.println("===============");

		//(3)引用Arrays包
		System.out.println(Arrays.deepToString(arr));
	}	
}

3、不规则的二维数组

例如:

int[][] arr = new int[2][];//Java可以省略列,不能省略行
arr[0] = new int[3];
arr[1] = new int[2];

图示为:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值