Java语言基础:数组 1.数组的定义 2.数组的内存分配及特点 3.数组操作常见问题 4.数组常见操作 5.数组中的数组
阅读目录:
1.数组的定义
2.数组的内存分配及特点
3.数组操作常见问题
4.数组常见操作
获取最值(最大值,最小值)
排序(选择排序,冒泡排序)
折半查找(二分查找)
5.数组中的数组
概念:同一种类型数据的集合。其实数组就是一个容器。
数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。
格式1:
元素类型【】数组名 = new 元素类型【元素个数或数组长度】;
实例: int[] arr = new int[5];
格式2:
元素类型【】数组名 = new 元素类型【】{元素,元素,....};
实例:int [] arr = new int[] {3,5,1,7}
示例:
class ArrayDemo { public static void main(String[] args) { //元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; //示例:int [] arr = new int[5]; int age =3 int [] arr = new int[3]; //建了一个箱子arr, 里面有3个格子、顾头不顾尾 arr[0] = 89; System.out.println(arr[0]); } }
2.数组的内存分配及特点
内存的划分: 1.寄存器——处理cpu 2.本地方法区——所在系统相关,java虚拟机的版本,分版本, 3.方法区——欠 4.栈内存——存储的都是局部变量。而且变量所属的作用域一旦结束,该变量就自动释放。 5.堆内存——存储是数组和对象(其他数组就是对象)凡是new建立在堆中。 特点: 1.每一个实体都有首地址值 2.堆内存中的每一个变量都有默认初始值,根据类型的不同而不同,整数是0.小数是0
基本格式:
class ArrayDemo3 { public static void main(String[] args) { //格式1 /* 需要一个容器,但是不明确容器的具体数据。 */ int[] arr = new int[3]; /* 需要一个容器,存储已经知道的具体数据。 */ //元素类型[] 数组名 = new 元素类型[] {元素,元素,...}; int[] arr = new int[] {11,22,33}; int[] arr = {11,22,33}; } }
3.数组操作常见问题
class ArrayDemo2 { public static void main(String[] args) { int[] arr = new int[3]; System.out.println(arr[3]);//ArrayIndexOutOfBoundsException; //arr = null; System.out.println(arr[0]);//NullPointerException //当引用型变量没有任何实体指向时,还在用其操作实体。就会发生该异常 System.out.printl(arr);// [I@c17164] } }
4.数组常见操作
获取最值(最大值,最小值)
class ArrayDemo5 { public static void main(String[] args) { /* 数组的常见操作:存和取。数组的便遍历 核心思想:就是对角标的操作。 获取数组中的最大值。 思路: 1.需要进行比较。并定义变量记录每次比较后较大的值 2.对数组中的元素进行遍历取出,和变量中记录的元素进行比较 3.如果遍历到的元素大于变量中记录的元素,就用变量记录住该大的值 4.遍历结果,该变量记录就是最大值。 定义一个功能来实现, 明确一:结果,是数组中的元素。int 明确二:未知内容,数组 */ int[] arr = {11,22,3public static int int max = getMax(arr); System.out.println("max=" + max) } public static int getMax(int[] arr) { //定义变量记录较大的值。 int max = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x]>max) max = arr[x]; } return max; } public static int getMax_2(int[] arr) { //定义变量记录较大的值。 int maxIndex = arr[0]; for(int x=1; x<arr.length; x++) { if(arr[x]>arr[maxIndex]) maxIndex = x; } return arr[maxIndex ]; } }
排序(选择排序,冒泡排序)
class ArrayDemo6 { //遍历数组的功能。 public static void printArray(int[] arr) { System.out.print("["); for(int x=0; x<arr.length; x++) { if(x!=arr.length-1) System.out.print(arr[x]+", "); else System.out.println(arr[x]+"]"); } } public static void main(String[] args) { //选择排序 int[] arr = {11,22,33,44,55}; printArray(arr); selectSort(arr); printArray(arr); } /* 选择排序 */ public static int[] selectSort(int[] arr) { for(int x=0; x<arr.length-1;x++) { for(int y=x+1;y<arr.length;y++) { if(arr[x]>arr[y]) { int temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } } } } }
折半查找(二分查找)