java数组详解

目录

一、数组理论基础知识

二、java中数组的使用

 1.一维数组的初始化

 2.一维数组的元素访问(获取和修改)

 3.一维数组的常见操作

 4.二维数组的初始化

 5.二维数组元素的访问

 6.二维数组的常见操作


一、数组理论基础知识

需要两点注意的是

  • 数组下标都是从0开始的。
  • 数组内存空间的地址是连续的
  • 数组是存放在连续地址空间上的相同类型的数据的集合,
  • 删除或者增添元素的时候,就难免要移动其他元素的地址。

二、java中数组的使用

  数组的两种定义格式:

  • 格式1数据类型[] 变量名;
  • 范例: int[] arr;
  • 定义了一个int类型的数组,数组名是arr
  • 格式2数据类型 变量名[];
  • 范例: int arr[];
  • 定义了一个int类型的变量,变量名是arr数组

 1.一维数组的初始化

  • 所谓初始化就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
  • 注意:数组中的每一个数据,我们称之为数组中的元素

 (1)静态初始化格式

  • 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
  • 格式数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,…};
  • 范例:int[] arr = new int[]{1,2,3};
    Java 提供了一种简化的格式,让我们使用起来更方便
  • 简化格式数据类型[] 变量名 = {数据1,数据2,数据3,…};
  • 范例:int[] arr = {1,2,3}

   (2) 动态初始化格式

  • 格式:数据类型[] 变量名 = new 数据类型[数组长度];
  • 范例:int[] arr = new int[3]

 2.一维数组的元素访问(获取和修改)

  • 一个是数组变量的访问方式
  • 格式:数组名
  • 一个是数组内部保存的数据的访问方式
  • 格式:数组名[索引]

  索引的注意事项

  1. 索引是数组中数据的编号方式
  2. 作用:用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
  3. 它还有这样的几个特征:
  • 特征①:索引从0开始
  • 特征②:索引是连续的
  • 特征③:索引逐一增加,每次加1

下面进行了元素访问的简单演示:

public class ArrayDemo { 
public static void main(String[] args) { 
//定义一个数组,并进行初始化 // 
int[] scores = {93,96,99}; 
//输出数组名 
System.out.println(scores); 
//输出数组中的元素 
System.out.println(scores[0]); 
System.out.println(scores[1]); 
System.out.println(scores[2]); 
System.out.println("-----------"); 
//修改数组中的元素 
scores[0] = 100; 
scores[1] = 98; 
scores[2] = 95; 
//再次输出数组中的元素 
System.out.println(scores[0]); 
System.out.println(scores[1]); 
System.out.println(scores[2]); 
} }

 3.一维数组的常见操作

  • 遍历
  • 获取最大值
  • 元素打乱

(1)数组的遍历

   什么是数组遍历:

  • 获取数组中的每一个元素,我们可以把获取到的元素输出在控制台

  获取数组长度(元素个数):

  • 格式:数组名.length
  • 范例:arr.length

 数组遍历通用格式

  • for (int i = 0; i < scores.length; i++) { scores[i] }
  • 注意:数组遍历指的是把数组中的元素取出来,取出来之后可以(打印,求和,判断…)

 下面进行数组遍历的简单演示:

public class ArrayTest01 { public static void main(String[] args) { 
//定义数组并初始化 
int[] arr = {77, 88, 99, 66, 55, 44};
for (int i=0; i<arr.length; i++) { 
System.out.println(arr[i]); 
} } }

(2)获取最大值

/* 获取最大值 */ 
public class ArrayTest02 { 
public static void main(String[] args) { 
//定义数组 
int[] arr = {12, 45, 98, 73, 60}; 
//定义变量max存储最大值,取第一个数据为变量的初始值 
int max = arr[0]; 
//与数组中剩余数据逐个比对,每次比对将最大值保存到变量max中 
for (int i=1; i<arr.length; i++) { 
if(arr[i] > max) { 
max = arr[i]; } }
//循环结束后输出变量max的值 
System.out.println("max:" + max); 
} }

(3)元素打乱

什么是元素打乱

  • 元素打乱就是把数组中的元素随机交换位置,每次运行都可能产生不一样的结果

遍历:

  • 正常情况下:12,45,98,73,60
  • 元素打乱后:45,73,12,60,98

涉及到的操作:

  • 获取数组中元素的随机索引
  • Random r = new Random();
  • int index = r.nextInt(arr.length);
  • 数组中元素交换
import java.util.Random; 
/* 元素打乱 */ 
public class ArrayTest{ 
//定义数组 
int[] arr = {12, 45, 98, 73, 60};
public static void main(String[] args) { 
Random r = new Random(); 
for (int i = 0; i < arr.length; i++) { 
int index = r.nextInt(arr.length); 
int temp = arr[i]; 
arr[i] = arr[index]; 
arr[index] = temp; }
//遍历数组 
for (int i = 0; i < arr.length; i++) { 
System.out.println(arr[i]); } } }

4.二维数组的初始化

(1)静态初始化

  • 格式数据类型[] [] 变量名 = new 数据类型[] []{{元素…},{元素…},{元素…},…};
  • 范例:int[] [] arr = new int[] []{{1,2,3},{4,5,6},{7,8,9}};
  • 简化格式数据类型[][] 变量名 = {{元素…},{元素…},{元素…},…};
  • 范例:int[] [] arr = {{1,2,3},{4,5,6},{7,8,9}};

(2)动态初始化

  • 格式数据类型[] [] 变量名 = new 数据类型[m] [n];
  • 范例:int[] [] arr = new int[2] [3];

5.二维数组元素的访问

  • 获取二维数组:数组名
  • 获取每一个一维数组:数组名[索引]
  • 获取每一个二维数组元素:数组名[索引] [索引]
/* 静态初始化简化格式:数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...}; */ 
public class ArrayDemo { 
public static void main(String[] args) { 
//静态初始化简化格式:数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...}; 
int[][] arr = {{1, 2, 3}, {4, 5, 6}}; 
//输出数组名 
System.out.println(arr); 
System.out.println(arr[0]); 
System.out.println(arr[1]); 
//如何获取到数据1,2,3呢? 
System.out.println(arr[0][0]); 
System.out.println(arr[0][1]); 
System.out.println(arr[0][2]); } }

6.二维数组的常见操作

  • 遍历
  • 元素打乱

(1)遍历

public class ArrayTest01 { 
public static void main(String[] args) { 
//定义二维数组,并进行静态初始化 
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
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(); } } }

(2)元素打乱

import java.util.Random; 
/* 需求:已知二维数组 arr = {{1,2,3},{4,5,6},{7,8,9}};
用程序实现把数组中的元素打乱,并在控制台输出打乱后 的数组元素 */
public class ArrayTest02 { 
public static void main(String[] args) { 
//定义二维数组,并进行静态初始化 
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 
//创建随机数对象 
Random r = new Random(); 
//遍历二维数组,进行元素打乱 
for (int i = 0; i < arr.length; i++) { 
for (int j = 0; j < arr[i].length; j++) { 
//arr[i][j] 
int x = r.nextInt(arr.length); 
int y = r.nextInt(arr[x].length); 
//元素交换 
int temp = arr[i][j]; 
arr[i][j] = arr[x][y]; 
arr[x][y] = temp; } }
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(); } } }

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安安喜乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值