系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
数组、类、接口是Java中的引用数据类型,和基本数据类型不一样,
数组的元素可以由基本数据类型或者是引用数据类型中的类(??)组成,数组变量也叫对象,和类变量(对象)一样!这就存在一个问题,由基本数据类型为元素组成数组,元素不是对象,数组却是对象;由引用数据类型中的类类型为元素组成数组,元素是对象,数组也是对象;
提示:以下是本篇文章正文内容,下面案例可供参考
一、引用性(类、数组、接口)变量的实质!!!!!和基本数据类型变量的区别
int[] arr;//创建(声明)一个一维数组的引用性变量,没有分配数组空间,只有一个引用性变量的空间
arr = new int[5];//使用new在内存中(堆还是栈,参考上一节String)创建一个数组对象
//参考上一节,还有一种叫做匿名对象,int[] arr3 = {1,2,3,4,5};
//并将数组对象的引用赋值给引用性变量arr
//二维数组貌似好像不一样!!!!!
二、一维数组
1.一维数组的创建
1.1声明
数组元素类型 数组名字[ ]; ------C/C++的风格
数组元素类型[ ] 数组名字; ------Java的风格
int arr[];
int[] arr;
1.2分配内存
数组名字 = new 数组元素的类型[数组元素的个数]
arr = new int[5];
1.3声明的同时分配内存
数组元素的类型 数组名字 = new 数组元素的类型[数组元素的个数]
int[] arr = new int[5];
2.一维数组的初始化(3种初始化的方法)—就是给数组赋值
//第1种
int[] arr1 = new int[5];
arr1[0] = 1;
arr1[1] = 2;
arr1[2] = 3;
arr1[3] = 4;
arr1[4] = 5;
//第2种
int[] arr2 = new int[]{1,2,3,4,5};
//第3种,匿名对象???
int[] arr3 = {1,2,3,4,5};
//错误语法
int[] arr2 = new int[5]{1,2,3,4,5};
3.一维数组的使用
int[] day = {31,28,31,30,31,30,31,31,30,31,30,31};
for(int i = 0; i < day.length; i++)
{
System.out.println(day[i]);
}
三、二维数组
1.二维数组的创建
1.1声明
数组元素类型 数组名字[ ][ ]; ------C/C++的风格
数组元素类型[ ][ ] 数组名字; ------Java的风格
int arr[][];
int[][] arr;
1.2分配内存
//第1种方法,直接为每一维分配内存
数组名字 = new 数组元素的类型[数组行数][数组列数]
arr = new int[2][3];
//第2种方法,分别为每一维分配内存
arr = new int[2][];
arr[0] = new int[2];
arr[1] = new int[3];
1.3声明的同时分配内存
??????书上没有讲如何操作!!!!!!!
2.二维数组的初始化(3种初始化的方法)—就是给数组赋值
//第1种
int[][] arr1 = new int[2][3];
arr1[0] = new int[]{1,2,3};//一维数组赋值给第一行
arr1[1][0] = 4;//给第二行赋值
arr1[1][1] = 5;//给第二行赋值
arr1[1][2] = 6;//给第二行赋值
//第2种
int[][] arr2 = new int[][]{{1,2,3},{4,5,6}};
//第3种,匿名对象???
int[][] arr3 = {{1,2,3},{4,5,6}};
//错误语法
int[][] arr2 = new int[2][3]{{1,2,3},{4,5,6}};
3.二维数组的使用
char[][] arr = new char[4][5];
arr[0] = new char[] { '春', '眠', '不', '觉', '晓' };
arr[1] = new char[] { '处', '处', '闻', '啼', '鸟' };
arr[2] = new char[] { '夜', '来', '风', '雨', '声' };
arr[3] = new char[] { '花', '落', '知', '多', '少' };
System.out.println("--------------横板-----------");
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]);
}
if (i % 2 == 0) {
System.out.println(",");
} else {
System.out.println("。");
}
}
System.out.println("--------------竖版-----------");
for (int j = 0; j < arr[0].length; j++) {
for (int i = arr.length - 1; i >= 0; i--) {
System.out.print(arr[i][j]);
}
System.out.println("");
}
System.out.println("。,。,");
四、数组的操作
java.util包的Arrays类包含了用来操作数组(如排序和搜索)的各种方法,除了第1个遍历 数组,其他的都用了了Arrays类的静态方法。
1.遍历数组
遍历数组就是获取每一个数组元素,一维数组很简单,下面是针对二维数组,常用的方法是双for循环和双foreach循环。
///双foreach循环
for (char a[] : arr) {
for (char b : a) {
System.out.print(b);
}
System.out.println();
}
2.填充和批量替换数组元素
Arrays.fill()
// 填充替换数组元素
int arr5[] = new int[5];
Arrays.fill(arr5, 10);//填充
for (int temp : arr5) {
System.out.println(temp);
}
int arr6[] = {1,2,3,4,5,6,7};
Arrays.fill(arr6, 2, 5, 0);//批量替换
for (int temp : arr6) {
System.out.println(temp);
}
3.对数组进行排序
Arrays.sort()--------只能升序
int arr7[] = {1,89,29,9,5,6,0};
double arr8[] = {1.0,89.0,29.0,9.4,5.2,6.7,0.9};
Arrays.sort(arr7);
Arrays.sort(arr8);
for (int temp : arr7) {
System.out.print(temp+" ");
}
for (double temp : arr8) {
System.out.print(temp+" ");
}
4.复制数组
不能直接复制数组名,参考”一、引用性(类、数组、接口)变量的实质“
// 复制数组
int arr9[] = {1,89,29,9,5,6,0};
int arr10[] = arr9;//复制数组名,指向的是同一个地址!!!!!!!
arr10[0] = 200;
System.out.println("arr9");
for (int temp : arr9) {
System.out.print(temp + " ");
}
System.out.println("\narr10");
for (int temp : arr10) {
System.out.print(temp + " ");
}
int arr11[] = Arrays.copyOf(arr9, 2);
System.out.println("\narr11");
for (int temp : arr11) {
System.out.print(temp + " ");
}
int arr12[] = Arrays.copyOfRange(arr9, 2, 4);
System.out.println("\narr12");
for (int temp : arr12) {
System.out.print(temp + " ");
}
5.数组查询
// 数组查询
int arr13[] = { 1, 89, 29, 9, 5, 6, 0 };
Arrays.sort(arr13);
int index = Arrays.binarySearch(arr13, 3);//不存在返回-插入点
System.out.println(index);
index = Arrays.binarySearch(arr13, 0);//存在返回元素索引
System.out.println(index);
五、数组排序算法
1.冒泡排序
2.直接选择排序
3.反转排序
总结
以上就是对Java中数组相关知识的讲解,后续是类和对象、包装类、数字处理类…的学习。