数组是多个相同类型数据的组合,实现对这些数据的统一管理
数组中的元素可以是任何类型,包括基本类型和仅用类型
数组属于仅用类型,可以理解为对象(object),数组中的每个元素相当于这个元素的成员变量
数组的长度是不变的
声明数组的格式
*1. 数据类型[] 数组名String [] args
*2. 数据类型数组名[]
java 中的数组必须先初始化,然后才能使用。
所谓 初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
使用new关键字来进行初始化
初始化分类:
动态初始化:初始化只指定数组长度,由系统为数组分配初始值
静态初始化;初始化时指定每个数组元素的初始值,由系统确定数组长度
int[]arr4= new int[5];
//左侧:int→数据类型 []→一维数组 arr4→数组名
//右侧:new→在内存中分配空间 int→数据类型 []→一维数组 5→长度(元素个数)
数组属性 length ,指明了数组的长度
* int 默认初始值 0
* double float 默认初始值 0.0
* char 默认初始值 " " 空格
* String 默认初始值 null 空值
* boolean 默认初始值 flase
数组常见问题:
* 1.数组下标越界异常
java.lang.ArrayIndexOutOfBoundsException
下标不再取值范围内
* 2.空指针异常
NullPointerException
数组引用没有指向实体,却在操作实体中的元素时
数组遍历
int []arr8={2,4,6,8,10,234,23,3,2,9,0,-18,98}; /*System.out.println(arr8[0]); System.out.println(arr8[1]); System.out.println(arr8[2]); System.out.println(arr8[3]); System.out.println(arr8[4]);
方式1: for循环
for(int i=0;i<arr8.length;i++) { System.out.println(arr8[i]); }
方式2:增强for循环
for(int x:arr8) { System.out.println(x); } String[]arr9={"zhangsan","lisi","wangwu","zhaoliu"}; for(int i=0;i<arr9.length;i++) { System.out.println(arr9[i]); } for(String x:arr9) { System.out.println(x); }
二维数组
Java中多维数组可以理解为数组的数组
Java中多维数组的声明和初始化应按从高维到低维的顺序进行
Java中多维数组可以不是规则的矩阵形式
int [] arr2=new int [7]; int[][] arr3=new int[3][];//二维数组arr3有3行,第一个维数不空即可 arr3[0]=new int[2];//第一行是一个有2个元素的一维数组 arr3[1]=new int[3];//第二行是一个有3个元素的一维数组 arr3[2]=new int[2];//第三行是一个有2个元素的一维数组冒泡排序法
*比较相邻的元素。如果第一个比第二个大,就交换他们两个。
*对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
*针对所有的元素重复以上的步骤,除了最后一个。
*持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 for(int i=0;i<arr.length-1;i++)//执行的轮数length { for(int j=0;j<arr.length-1-i;j++)//每轮执行的次数 { //比较相邻的元素。如果第一个比第二个大就交换他们两个 if(arr[j]>arr[j+1]) { int temp=0; temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } for(int x:arr)//加强for循环 { System.out.println(x); }