一:数组的基本知识


1.数组属于引用变量类型变量,数组的元素可以是引用数据类型也可以是基本数据类型.

2.数组是连续的一组地址空间 数组的长度一旦确定,就不能修改

3.数组元素的默认初始化值:  
                           数组元素是整形:0
                           数组元素是浮点型:0
                            数组元素是char类型:0或'\u0000',而非'0'
                           数组元素是boolean类型 : false

                            数组元素是引用数据类型: null


二:初始化一维数组

1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行

int[] ids; //声明

ids = new int[] {1001,1002,1003,1004};//

1.2动态初始化:只对数组进行初始化,并未对其赋值

String[] names = new String[5]; //只对数组进行初始化,并未对其赋值

总结:数组一旦初始化完成,其长度就确定了

三:二维数组的初始化以及遍历

public static void main(String[] args) {
		//静态初始化
		int[][] arr1 = new int[][] {{1,2,3},{4,5},{6,7,8}};
		//动态初始化1
		String[][] arr2 = new String[3][2];
		//动态初始化2
		String[][] arr3 = new String[3][];
		//若想引用arr3[1][0],需要对arr3[1]分配内存空间
		
		arr3[1] = new String[4];//相当于对数组内部分配了内存空间.
		
		//获取数组的长度,不考虑其内部数据类型.
		System.out.println(arr1.length);
		
		
		//如何遍历二维数组
		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();
		}
		
//总结
	/*  二维数组的使用:
	 * 规定:二位数组分为外层数组元素和内层数组元素
	 * int[][] arr = new int[4][3];
	 *         外层元素: arr[0],arr[1];
	 *         内层元素:arr[0][0],arr[1][2];
	 *         
	 *         数组元素的默认初始化值
	 *         方式一: int[][] arr = new int[4][3];
	 *         外层元素的初始化值为:地址值
	 *         内层元素的初始化值为:与一维数组初始化情况相同
	 *         
	 *         对于初始化方式二:比如 int[][] arr = new int[4][];
	 *         外层元素的初始化值为:null ,内层为数组是引用类型,所以为null。
	 *         内层元素的初始化值为:不能调用
	 *         
	 *         数据与数据之间的逻辑关系:集合、一对一、一对多、多对多
	 *         
	 *         数据的存储结构:  线性表:顺序表、链表、栈、队列、
	 *         				非线性表:树形结构,二叉树,图形结构
	 * 
	 * 
	 * 
	 * 
	 * 
	 * */

四:数组中常用的工具类

public class ArrayTools {
	public static void main(String[] args) {
		//1.boolean equals(int[] a,int[] b):判断两个数组是否相等
		int[] arr1 = new int[] {1,2,34,4};
		int[] arr2 = new int[] {1,3,2,4,30,19,-10,20,1098};
		boolean isEquals = Arrays.equals(arr1, arr2);
		System.out.println(isEquals);
		
		
		//String toString(int[] a):输出数组信息
		
		System.out.println(Arrays.toString(arr2));
		
		
		//void fill(int[] a,int val):将指定值填充到数组中
		Arrays.fill(arr1, 10);
		System.out.println(Arrays.toString(arr1));
		
		//void sort(int[] a):对数组进行排序
		Arrays.sort(arr2);
		System.out.println(Arrays.toString(arr2));
		
		//int binarySearch(int[] a,int key) :二分查找,只能适用排序好的数组
		
		int index = Arrays.binarySearch(arr2, 20);
		System.out.println(index);
		if(index >= 0) {
			System.out.println("找到了");
		}else {
			System.out.println("没有找到");
		}
		
		
		
		
		
		
		
	}
	
	
	
}

五:补充break和continue的用法

 break  :使用范围  switch-case语句和循环语句中,  功能:结束当前循环,默认跳出包裹此关键字最近的一层循环。
continue : 用在循环结构中,  功能 : 结束当次循环。

public static void main(String [] args) {
	/*	for(int i = 1;i <= 10; i++) {
			if(i % 4 == 0) {
				//break;  结果为123
				continue; //12356910
			}
			System.out.print(i);
		}*/
		
		
		
			label:	for(int i = 1; i <= 4;i++) {  //加个标签
					for(int j = 1; j <= 10; j++) {
						if(j % 4 ==0) {
							//break label; //结束指定标识的一层循环结构  ,没有label的话执行结果为123123123123,结束最近的一层循环
							continue label; //结束指定标识的一层循环结构当次循环。不加标签的话结果
											//123567910123567910123567910123567910
						}
						System.out.print(j);
						
					}
					
		}
		
	}