ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Java之数组
[打印本页]
作者:
飞不高
时间:
2024-5-12 23:06
标题:
Java之数组
目录
数组(Array)
一、数组概念
二、怎样声明一个数组
三、怎样为数组初始化
1、数组本身初始化:
2、数组的元素初始化
2.1 一维数组
2.2多维数组
四、怎样表示数组的各个概念
五、数组内存和分配空间
六、数组相关算法
七、十大内部排序算法
八、数组的工具类:Arrays
九、数组的异常
数组(Array)
一、数组概念
数组:
普通的讲:一组数
本质上:数组是一个容器,用来装数据
数组(array)的定义:(了解)
就是把一组雷同数据类型的数据,按照一定的顺序排列,组合到一起。
我们把这组雷同数据类型的变量,数据,用一个统一的名称进行管理。这个统一的名称,叫做数组名。
此中的每一个数据我们称为元素(element),怎样表示一个元素,通过下标,索引(index)
这个数组的元素的个数,我们称为数组的长度(length)
二、怎样声明一个数组
语法格式:
元素的数据类型[] 数组名;
三、怎样为数组初始化
1、数组本身初始化:
确定数组的长度,确定元素的个数
本质上,申请一整块连续的空间,用来装数据
语法格式:
数组名 = new 元素的数据类型[数组的长度];
复制代码
2、数组的元素初始化
如果数组的元素不赋值,有初始值,有默认初始值。
数据类型:
基本数据类型(8种)
引用数据类型:类、接口、数组、枚举
byte,short,int,long : 默认为0
float,double:0.0
boolean:false
char:\u0000 Unicode编码值为0的字符
引用类型:默认为null
也可以手动初始化。
复制代码
2.1 一维数组
语法格式:
数组名[下标] = 值;
// 动态初始化
int[] arr = new int[3]; // 定义一个数组并且给定其长度,目前默认数值都是0 这是属于动态初始化
arr[0] = 3;
arr[1] = 9;
arr[2] = 8;
// 静态初始化
int[] arr[] = new int[]{3,9,8}; // 定义一个数组,并且赋值,这属于静态初始化
复制代码
public static void main(String[] args){
//请组长把本组的每一个学员的成绩,录入,并保存
//后续可能需要,找最高分,最低分,排序,....
//这么做不方便后面的统一管理,例如:排序等
/*
int s1 = 89;
int s2 = 87;
int s3 = 56;
*/
//int a;//声明变量
//int[] scores;//声明数组
//scores = new int[5];//数组的初始化,确定数组的长度,一共可以装5个int的整数
//元素的数据类型:int
//数组名:scores
//数组的长度:scores.length,值是5
//下标的范围:0~4
//元素有哪些?scores[0],scores[1],scores[2],scores[3],scores[4]
int[] scores = new int[5];
/*
System.out.println("第一个元素的值是:" + scores[0]);
System.out.println("第二个元素的值是:" + scores[1]);
System.out.println("第三个元素的值是:" + scores[2]);
System.out.println("第四个元素的值是:" + scores[3]);
System.out.println("第五个元素的值是:" + scores[4]);
//System.out.println("第五个元素的值是:" + scores[5]);//错误的,会导致数组下标越界异常
*/
for(int index = 0; index<5; index++){
System.out.println("第"+ (index+1)+"个元素的值是:" + scores[index]);
}
scores[0] = 89;//第一个元素,第一个数据
scores[1] = 87;//第二个元素,第一个数据
scores[2] = 56;//第三个元素,第一个数据
scores[3] = 99;//第四个元素,第一个数据
scores[4] = 78;//第五个元素,第一个数据
//赋值之后再遍历,挨个看看元素的值
for(int index = 0; index<scores.length; index++){
System.out.println("第"+ (index+1)+"个元素的值是:" + scores[index]);
}
}
复制代码
</ol>
七、十大内部排序算法
选择排序
直接选择排序、堆排序
交换排序
> 冒泡排序、快速排序
插入排序
直接插入排序、折半插入排序、Shell排序
归并排序
桶式排序
基数排序
八、数组的工具类:Arrays
在java.util包
(1)Arrays.sort(数组名):从小到大排序
(2)Arrays.toString(数组名):把数组的元素拼接成一个字符串,[元素1,元素2,元素3...]
(3)Arrays.fill(数组名,value值):把数组每一个元素都填充为value值
(4)Arrays.fill(数组名,from,to, value值):把数组[from,to)的位置填充为value值
(5)Arrays.copyOf(原数组名,新数组的长度):用一个新数组接收一下
新数组 = Arrays.copyOf(原数组名,新数组的长度);
(6)Arrays.copyOfRange(原数组名,from, to):to可以高出原数组的下标范围,新数组的长度是to-from,to不包含
新数组 = Arrays.copyOfRange(原数组名,from, to);
(7)Arrays.binarySearch(数组名,要查找的value值)
这个方法的条件,必须保证数组是有序,否则结果是不保证正确的
int[][] arr = new int[3][2];
int[][] arr = new int[3][2];
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[4];
int[][] arr = new int[3][];
arr[0] = new
复制代码
九、数组的异常
数组脚标越界异常(ArrayIndexOutOfBoundsException)
public static void main(String[] args) {
// 1、二维数组的声明和初始化
int[] arr = new int[]{1, 2, 3}; //一维数组
// 静态初始化
int[][] arr1 = new int[][]{{1, 2, 3}, {4, 5}, {1, 2, 4}};
// 动态初始化1
String[][] arr2 = new String[2][2];
// 动态初始化2
String[][] arr3 = new String[3][];
//2.如何调用数组的指定位置的元素
System.out.println(arr1[0][1]);
System.out.println(arr2[1][1]);
arr3[1] = new String[4];
System.out.println("arr3 = " + arr3[1][0]);
// 3、获取数组的长度
System.out.println("arr1.length = " + arr1.length);
System.out.println("arr1[0].length = " + arr1[0].length);
System.out.println("arr1[1].length = " + arr1[1].length);
// 4、如何遍历二维数组
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
System.out.print(arr1[i][j] +",");
}
System.out.println();
}
复制代码
访问到了数组中的不存在的脚标时发生。
空指针异常(NullPointerException)
为什么从0开始?
数组名也是一个变量,而且是一个引用数据类型的变量。
数组名存储的是这块连续内存空间的首地址。
第一个元素:数组名[0]表示距离首地址的偏移量为0
第二个元素:数组名[1]表示距离首地址的偏移量为1
复制代码
arr引用没有指向实体,却在操作实体中的元素时
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4