一维数组的三种定义:
- 数据类型[] 数组名字 = new 数据类型[长度];
- eg:int[] array = new int[6];
- 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
- eg:int[] arr = new int[]{1,2,3,4,5,6};
- 数据类型[] 数组名 = {元素1,元素2,元素3...};
- eg:int[] arr = {1,2,3,4,5,6};
代码案列如下:
public static void main(String[] args) {
/* 如何定义一维数组 */
int [] arr1 = new int[3]; //定义一个长度为3的一维数组但没有赋值
arr1[0]=1; //给数组下标为0的赋值为1
arr1[1]=2;
arr1[2]=3;
System.out.println("-------------------------");
int [] arr2= new int[]{1,2,3,4};//定义一个一维数组并赋值;
System.out.println("-------------------------");
int [] arr3 = {1,2,3,4,5}; //直接定义一个一维数组赋值 和上面区别不大
}
数组的类型:
public static void main(String[] args) {
/* 数组的声明同样和数据类型息息相关 */
//整数 类型的数组
int [] intArr= {1,2,3,4};
short[] shortArr = {1,23,4};
char [] charArr = {232,44,6};
//浮点数 类型
float floatArr[] = {1.2f,2.2f};
double doubleArr[] = {1.2,0.0};
//字符串 类型的数组
String strArr [] = {"我","爱","你"};
//boolean 类型 数组
boolean booArr[] = {true,true};
}
因为数组长度固定,因此数组本身无法添加或者移除元素,但是我们可以在原数组的基础上复制一份数组来改变其长度和元素。数组的类型可以根据自己需求而定义。
二维数组:
二维数组,是在一维数组的的层次上再嵌套一层数组的意思。
二维数组定义方式:
- 数据类型[][] 数组名字 = new 数据类型[长度][长度]; eg:int[][] array = new int[2][3];
- 数据类型[][] 数组名字 = new 数据类型[长度][]; eg:int[][] array = new int[2][];
- 数据类型[][] 数组名字 = new 数据类型[][]{{元素1},{元素2}...}; eg:int[][] array = new int[][]{{1,2},{3,4}}; int[][] array = {{1,2},{3,4}};
代码如下:
public static void main(String[] args) {
/* 二维数组的定义 */
int arrs1[][] = new int[2][3];
//定义了一维和二维的长度,并没有赋值
//前面的一个括号的是一维(外围数组)的长度 后面是定义二维数组的长度
int[][] arrs2 = new int[2][];
// 这种方式在定义的时候只规定了外层的一维数组个数,
并未规定内部元素嵌套的二维数组的内容和长度。
int[][] array3 = new int[][]{{1,2},{3,4}};
int[][] array4 = {{1,2},{3,4}};
//这种方式在定义的时候,直接对数组进行了初始化赋值。
}
同样:二维数组和一维数组一样也可以定义不同数据类型的数组。
数组的遍历:
public static void main(String[] args) {
/* 一维数组的遍历 */
int arr1[] = { 1, 23, 3, 12, 11 };
for (int i = 0; i < arr1.length; i++) {
System.err.println(arr1[i]);
}
System.out.println("-----------------------------------");
/* 一维数组的while遍历 */
int []a = {12,13,14,15};
int i1 = 0;
while (i1>a.length) {
System.out.println(a[i1]);
i1++;
}
System.out.println("-----------------------------------");
int []a1 = {12,13,14,15};
for (int i : a1) {
System.out.println(i);
}
/* 二维数组的遍历 */
int arr[][] = { { 21, 331, 21, 11 }, { 11, 22, 33, 11 } };
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.println(arr[i][j]);
}
}
System.out.println("------------------------------------");
/* 二维数组while循环 遍历 */
int arr2[][] = { {1,2,3,4,5}, {6,7,8,9,0} };
int i = 0;
while (i<arr2.length) {
int j =0;
while (j<arr2[i].length) {
System.out.println(arr2[i][j]);
j++;
}
i++;
}
System.out.println("--------------------------------------");
}
求数组的最大值,最小值:
public static void main(String[] args) {
//求一维数组的最大值
System.out.println("求一维数组最大值");
int arry [] = {19,30,22,11,9,-1,-36,67,31};
int maxArry = arry[0];
for (int i = 0; i < arry.length; i++) {
if(maxArry < arry[i]) {
maxArry = arry[i];
}
}
System.out.println(maxArry);
//求一维数组的最小值
System.out.println("----------------------------------------");
System.out.println("求一维数组最小值");
int arry1 [] = {19,2,1,33,-21,93,1,-27,33,0};
int minArry1 = arry1[0];
for (int i = 0; i < arry1.length; i++) {
if(minArry1 > arry1[i]) {
minArry1 = arry1[i];
}
}
System.out.println(minArry1);
//求二维数组的最小值
System.out.println("----------------------------------------");
System.out.println("求二维数组最小值");
int arry2[][] = {{23,12,-29,29,12,78,39,-12,-33},{99,312,100,3,-22,-1,-29,93,211}};
int minArry2 = arry2[0][0];
for (int i = 0; i < arry2.length; i++) {
for (int j = 0; j < arry2[i].length; j++) {
if(minArry2 > arry2[i][j]) {
minArry2 = arry2[i][j];
}
}
}
System.out.println(minArry2);
//求二维数组的最大值
System.out.println("----------------------------------------");
System.out.println("求二维数组最大值");
int arry3[][] = {{23,12,-29,29,12,78,39,-12,-33},{99,312,100,3,-22,-1,-29,93,211}};
int minArry3 = arry3[0][0];
for (int i = 0; i < arry3.length; i++) {
for (int j = 0; j < arry3[i].length; j++) {
if(minArry3 < arry3[i][j]) {
minArry3 = arry3[i][j];
}
}
}
System.out.println(minArry3);
}
二分查找:
public static void main(String[] args) {
/*
* 数组的二分查找 二分查找顾名思义,就是分成两等分开始查找,每次分两等分
* eg:a[]={1,2,3,4,5,2,31,98};
* 查找一个数,我们拿中间的5来作比较。如果比5大,我们在拿31做比较,
* 如果小于5我们就拿3做比较 以此类推。
*/
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int key =9;
int low = 0;
int high = arr.length - 1;
int middle = 0; //定义middle
if(key < arr[low] || key > arr[high] || low > high){
System.out.println("越界");
}
while(low <= high){
middle = (low + high) / 2;
if(arr[middle] > key){
//比关键字大则关键字在左区域
high = middle - 1;
}else if(arr[middle] < key){
//比关键字小则关键字在右区域
low = middle + 1;
}else{
System.out.println(key+"的下标是:"+middle);
break;
}
}
}
冒泡排序:
Java 小志:Java冒泡排序原理实现以及优化zhuanlan.zhihu.com