什么是数组
数组:数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
即:数(数据)组(一组)就是一组数据。
数组的使用
数组的定义
1、动态初始化
数据类型 数组名[]=new 数据类型[大小]
int[] arr=new int[10];//创建了一个数组,名字arr,存放10个int类型的数据
说明:这是定义数组的一种方法。
数组的引用(使用/访问/获取数组元素)
数组名[下标/索引/index]比如:你要使用a数组的第3个数 a[2],数组的下标从0开始
2、动态初始化
先声明数组
语法:数据类型 数组名[];也可以数据类型[]数组名;
int a[];或者int []a;
创建数组
语法:数组名=new 数据类型[大小];
a=new int[10];
3、静态初始化
语法:数据类型 数组名[]={元素值,元素值,…}
例如:int a[]={1,2,3,4,5}
数组使用注意事项
1、数组是多个相同类型数据的组合,实现对这些数据的统一管理
2、数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
3、数组创建后,如果没有赋值,有默认值
int 类型默认值为 0
short 类型默认值为 0
byte 类型默认值为 0
long 类型默认值为 0
float 类型默认值为 0.0
double 类型默认值为 0.0
char 类型默认值为 \u0000
boolean 类型默认值为 false
String 类型默认值为 null
4、使用数组的步骤
①、声明数组并开辟空间
②、给数组各个元素赋值
③、使用数组
5、数组的下标是从0开始的。
6、数组下标必须在指定范围内使用,否则报:下标越界异常,比如int a[]=new int[5];则有效下标为0-4
7、数组属引用类型,数组型数据是对象(object)
数组赋值机制
1、基本数据类型赋值,这个值就是具体的数据,而且相互不影响。
2、数组默认情况下是引用传递,赋的值是地址。(第一个元素为这个数组的地址)
二维数组的使用(分配空间是分配的是真实的数,而不是相应的索引数)
1、动态初始化
1)语法:类型 数组名[][]=new 类型[大小][大小]
//第一个大小表示包含几个一维数组,
//第二个大小表示每一个一维数组包含几个元素。
2、静态初始化
1)语法:定义类型 数组名[][]={{值1,值2},{值1,值2},{值1,值2}…}
例题1、
请求出一个数组int[]的最大值{4,-1,9,10,23},并得到对应的下标
public class Test {
public static void main(String[] args) {
int[] arr={4,-1,9,10,23};
int max=arr[0];
int index=-1;
for (int i = 0; i <arr.length ; i++) {
if(max<arr[i]){
max=arr[i];
index=i;
}
}
System.out.println("最大值为"+max);
System.out.println("下标为"+index);
}
}
例题2:
有一个数组:int [] arr = {8,4,2,1,23,344,12}。
猜数游戏:从键盘中任意输入一个数据,判断数组中是否包含此数,并写出下标
public class Test {
public static void main(String[] args) {
int[] arr={8,4,2,1,23,344,12};
int index=-1;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入一个数");
int num=scanner.nextInt();
for (int i = 0; i < arr.length; i++) {
if(num==arr[i]){
System.out.println("找到该数字"+num);
index=i;
System.out.println("其下标为"+index);
}
}
if(index==-1){
System.out.println("没找到该数");
}
}
}
例题3:
把一个数组的元素逆序交换,int[] arr = { 5, 11, 15, 24, 36, 47, 59, 66 };
交换元素后为 { 66 ,59 ,47 ,36 ,24,15 ,11 ,5 };
public class Test {
public static void main(String[] args) {
int[] arr = { 5, 11, 15, 24, 36, 47, 59, 66 };
for (int i = 0; i < arr.length; i++) {
if(arr[i]<arr[arr.length-1-i]){
int temp=arr[i];
arr[i]=arr[arr.length-1-i];
arr[arr.length-1-i]=temp;
}
}
for (int i = 0; i <arr.length ; i++) {
System.out.print(arr[i]+"\t");
}
}
}
例题4:
现在有如下一个数组:
int oldarr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
要求将以上数组中的0项去掉,将不为0的值存入一个新的数组
public class Test {
public static void main(String[] args) {
int oldarr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
int newarr[]=new int[12];
for (int i = 0,j=0; i <oldarr.length; i++) {
if(oldarr[i]!=0){
newarr[j]=oldarr[i];
j++;
}
}
for (int i = 0; i <newarr.length ; i++) {
System.out.print(newarr[i]+"\t");
}
}
}