数组的概念:
数组就相当于一个书架放着一些相同类别的书籍,这些书籍都是有分类的比如计算机类医学类等等书籍。
数组的声明格式:
动态声明
数据类型[] 数组名=new 数据类型[数组大小]; int[] arr1=new int[5];
静态声明
数据类型[] 数组名={数据1,数据2,数据3}; int[] arr2={1,2,3}; 或者 数据类型[] 数组名=new int[]{数据1,数据2,数据3}; int[] arr2=new int[]{1,2,3};
静态数组初始化与动态数组初始化区别:静态初始化是根据元素的个数,来分配数组大小。
动态初始化是指定大小后再初始化值。
数组的内存图:
栈:局部变量,局部方法。
堆:只要是new的东西都放在堆。
package com.itheima.test; public class Arrays_Demo01 { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr1 = new int[3]; int[] arr2 = new int[3]; arr1[0] = 1; arr1[1] = 2; arr1[2] = 3; arr2[0] = 1; arr2[1] = 2; arr2[2] = 3; System.out.println(arr1); System.out.println(arr2); for(int i=0;i<arr1.length;i++) { System.out.println(arr1[i]); } for(int i=0;i<arr2.length;i++) { System.out.println(arr2[i]); } } }
数组遍历:
数组的下标是以0开始,length是获得数组的长度
package com.itheima.test; public class Arrays_Demo02 { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr1 = { 1, 2, 3, 4, 5 }; for (int i = 0; i < arr1.length; i++) { System.out.println(arr1[i]); } } }
数组的冒泡算法:
package com.itheima.test; public class Arrays_Demo01 { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = new int[] { 55, 44, 2, 23, 332, 8, 441 }; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length-1; j++) { if (arr[j] > arr[j + 1]) { int number = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = number; } } } for (int c : arr) { System.out.println(c); } } }
图解冒泡算法
数组练习题1:
求出数组的最大值
package com.itheima.test; public class Arrays_Demo02 { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr1 = { 1, -11, 888, 4, 5 }; int max = arr1[0]; //先初始化一下max for (int i = 1; i < arr1.length; i++) { if (arr1[i] > max) { //判断有没有比max更大的元素 max = arr1[i]; //如果有则重新赋值给max } } System.out.println(max); } }
数组倒序练习题2:
package com.itheima.test; public class Arrays_Demo02 { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr1 = { 1, 14, 177, 155, -11, 888}; int number; /*先声明一个int数 * 6个元素需要交换3次,8个元素需要交换4,交换次数=数组长度/2 * 要交换值就需要一个中间数,那么number得作用就在这里 * * */ for (int i = 0; i < arr1.length / 2; i++) { number=arr1[i]; arr1[i] = arr1[arr1.length - 1 - i]; arr1[arr1.length - 1 - i]=number; } for(int c:arr1) { System.out.println(c); } } }