IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java(3):Java语言中的数组 -> 正文阅读

[Java知识库]Java(3):Java语言中的数组

目录

0. 相关文章链接

1. 数组的概述

2. 一维数组

2.1. 声明和初始化

2.2.?通过角标的方式调用和其中的length属性

2.3. 数组的默认初始化值

2.4. 数组的遍历

2.5. 数组的内存解析

3. 二维数组

3.1. 二维数组的概述

3.2.?二维数组的声明与初始化

?3.3. 二维数组的调用和属性

3.4. 二维数组的遍历和默认初始化值

3.5. 二维数组的内存解析

4. 数组中的常见算法

4.1. 数组元素的反转

4.2. 数组中指定元素的查找

4.3. 数组中排序算法的时间复杂度对比

4.4. 冒泡排序代码

5. Arrays工具类的使用

6. 数组中的常见异常

6.1.?数组角标越界异常:ArrayIndexOutOfBoundsException

6.2.?空指针异常:NullPointerException


0. 相关文章链接

1. 数组的概述

① 数组的理解:数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,
?并通过编号的方式对这些数据进行统一管理。
?
② 数组相关的概念:
?>数组名
?>元素
?>角标、下标、索引
?>数组的长度:元素的个数
?
③ 数组的特点:
?>数组是序排列的
?>数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型
?>创建数组对象会在内存中开辟一整块连续的空间
?>数组的长度一旦确定,就不能修改。
?
④ 数组的分类:
?>照维数:一维数组、二维数组、。。。
?>照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组

⑤?数据结构:
?>数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
?>数据的存储结构:线性表、树形结构等

2. 一维数组

2.1. 声明和初始化

正确的方式:
	int num;//声明
	num = 10;//初始化
	int id = 1001;//声明 + 初始化
	
	int[] ids;//声明
	//1.1 静态初始化:数组的初始化和数组元素的赋值操作同时进行
	ids = new int[]{1001,1002,1003,1004};
	//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
	String[] names = new String[5];

	int[] arr4 = {1,2,3,4,5};//类型推断

错误的方式:
	//		int[] arr1 = new int[];
	//		int[5] arr2 = new int[5];
	//		int[] arr3 = new int[3]{1,2,3};

2.2.?通过角标的方式调用和其中的length属性

//数组的角标(或索引从0开始的,到数组的长度-1结束。
names[0] = "王铭";
names[1] = "王赫";
names[2] = "张学良";
names[3] = "孙居龙";
names[4] = "王宏志";//charAt(0)

System.out.println(names.length);//5
System.out.println(ids.length);

说明:
数组一旦初始化,其长度就是确定的。arr.length
数组长度一旦确定,就不可修改。

2.3. 数组的默认初始化值

> 数组元素是整型:0
> 数组元素是浮点型:0.0
> 数组元素是char型:0或'\u0000',而非'0'
> 数组元素是boolean型:false
> 数组元素是引用数据类型:null

2.4. 数组的遍历

for(int i = 0;i < names.length;i++){
	System.out.println(names[i]);
}

2.5. 数组的内存解析

3. 二维数组

3.1. 二维数组的概述

数组属于引用数据类型
数组的元素也可以是引用数据类型
一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组。

3.2.?二维数组的声明与初始化

正确的方式:
	int[] arr = new int[]{1,2,3};//一维数组
	//静态初始化
	int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
	//动态初始化1
	String[][] arr2 = new String[3][2];
	//动态初始化2
	String[][] arr3 = new String[3][];
	//也是正确的写法:
	int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
	int[] arr5[] = {{1,2,3},{4,5},{6,7,8}};//类型推断
		
错误的方式:
	//		String[][] arr4 = new String[][4];
	//		String[4][3] arr5 = new String[][];
	//		int[][] arr6 = new int[4][3]{{1,2,3},{4,5},{6,7,8}};

?3.3. 二维数组的调用和属性

System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null

arr3[1] = new String[4];
System.out.println(arr3[1][0]);
System.out.println(arr3[0]);//


System.out.println(arr4.length);//3
System.out.println(arr4[0].length);//3
System.out.println(arr4[1].length);//4

3.4. 二维数组的遍历和默认初始化值

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

 * 	规定:二维数组分为外层数组的元素,内层数组的元素
 * 		int[][] arr = new int[4][3];
 * 		外层元素:arr[0],arr[1]等
 * 		内层元素:arr[0][0],arr[1][2]等
 * 
 *   数组元素的默认初始化值 
 *   针对于初始化方式一:比如:int[][] arr = new int[4][3];
 *      外层元素的初始化值为:地址值
 *      内层元素的初始化值为:与一维数组初始化情况相同
 *      
 *   针对于初始化方式二:比如:int[][] arr = new int[4][];
 *   	外层元素的初始化值为:null
 *      内层元素的初始化值为:不能调用,否则报错。

3.5. 二维数组的内存解析

4. 数组中的常见算法

4.1. 数组元素的反转

//方法一:
//		for(int i = 0;i < arr.length / 2;i++){
//			String temp = arr[i];
//			arr[i] = arr[arr.length - i -1];
//			arr[arr.length - i -1] = temp;
//		}
		
//方法二:
//		for(int i = 0,j = arr.length - 1;i < j;i++,j--){
//			String temp = arr[i];
//			arr[i] = arr[j];
//			arr[j] = temp;
//		}

4.2. 数组中指定元素的查找

① 线性查找

实现思路:通过遍历的方式,一个一个的数据进行比较、查找。
适用性:具有普遍适用性。

② 二分法查找

实现思路:每次比较中间值,折半的方式检索。
适用性:(前提:数组必须有序)

4.3. 数组中排序算法的时间复杂度对比

4.4. 冒泡排序代码

int[] arr = new int[]{43,32,76,-98,0,64,33,-21,32,99};

//冒泡排序
for(int i = 0;i < arr.length - 1;i++){
	
	for(int j = 0;j < arr.length - 1 - i;j++){
		
		if(arr[j] > arr[j + 1]){
			int temp = arr[j];
			arr[j] = arr[j + 1];
			arr[j + 1] = temp;
		}
	}
}	

5. Arrays工具类的使用

① 定义在java.util包下。
② Arrays:提供了很多操作数组的方法。

//1.boolean equals(int[] a,int[] b):判断两个数组是否相等。
int[] arr1 = new int[]{1,2,3,4};
int[] arr2 = new int[]{1,3,2,4};
boolean isEquals = Arrays.equals(arr1, arr2);
System.out.println(isEquals);

//2.String toString(int[] a):输出数组信息。
System.out.println(Arrays.toString(arr1));

	
//3.void fill(int[] a,int val):将指定值填充到数组之中。
Arrays.fill(arr1,10);
System.out.println(Arrays.toString(arr1));


//4.void sort(int[] a):对数组进行排序。
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));

//5.int binarySearch(int[] a,int key)
int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
int index = Arrays.binarySearch(arr3, 210);
if(index >= 0){
	System.out.println(index);
}else{
	System.out.println("未找到");
}

6. 数组中的常见异常

6.1.?数组角标越界异常:ArrayIndexOutOfBoundsException

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

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

System.out.println(arr[-2]);

System.out.println("hello");

6.2.?空指针异常:NullPointerException

//情况一:
//int[] arr1 = new int[]{1,2,3};
//arr1 = null;
//System.out.println(arr1[0]);

//情况二:
//int[][] arr2 = new int[4][];
//System.out.println(arr2[0][0]);

//情况:
String[] arr3 = new String[]{"AA","BB","CC"};
arr3[0] = null;
System.out.println(arr3[0].toString());

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 13:53:43  更:2021-08-14 13:55:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 4:33:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码