如何创建数组:
数组声明,分配空间,赋值,使用
分步写:
- 数组声明:数据类型 数组名[]; 或者数据类型[] 数组名;
- 分配空间: 数组名=new 数据类型[数组长度];
- 赋值: 数组名[ 下标]=数据; ps:下标从0开始
- 使用数据:数组名[下标];
int[] arr=new int [5]/int arr[]=new int [5];
arr[0]=1;
arr[2]=2;
….
int[] arr=new int[]{1,2,3,4,5};
数组默认值:
byte/short/int/long类型数组元素默认值:0
float/double类型的数组默认值:0.0
char类型数组元素默认值:" "
boolean类型数组元素默认值为:false
String类型数组元素的默认值:null
数组名,分配空间,赋值合并可以简写
double[] nums=new double[]{12.5,33.2,231.1,23.13,23.1564};//ps:此时在[]不能写长度
遍历数组:
//声明一个长度为10的int类型的数组,然后用键盘录入给数组元素赋值
int[] nums=new int[10];
Scanner input=new Scanner(System.in);
for(int i=0;i<10;i++){
System.out.println("请输入第"+(i+1)+"个数据");
nums[i]=input.nextInt();
}
for(int i=0;i<10;i++){
System.out.print(nums[i]+" ");//遍历数组
}
int[] nums=new int[]{1,2,3,4,5,6,7,8,9,10};
//遍历数组
for(int i=0;i<=nums.length-1;i++){
System.out.print(nums[i]+" ");
}
//数组名.length 得到数组的长度
}
for(int a:nums){ //foreach语句,增强for循环
System.out.println(a);
}//执行机制:将数组或者集合里面的数取出来后存储在变量中,然后操作变量去操作数组或者集合
数组增加一个数据:
/*
* 有一个数组元素按照从大到小的顺序排列的数组{100,90,80,70,60} 插入一个元素,要保证插入后还是降序
*
* 思路:
* (1):声明一个长度比原来数组长度大1的数组,将原来的数组元素存储到新数组中
* (2):通过输入获取数据
* (3):得到插入数据的位置下标
* (4):从插入数据开始以及之后的元素都要往后移一位(ps:从最后面开始)
* (5):将获取的插入数据元素存储到插入元素中去
*
*/
int i;
int[] nums=new int[]{100,90,80,70,60};//需要插入元素的数组
int[] nums1=new int[nums.length+1];//新数组
Scanner input=new Scanner(System.in);
System.out.println("请输入你想插入的数: ");//85
int num=input.nextInt(); //获取插入的元素
int count=0;
for(i=0;i<nums.length;i++){
if(nums[i]<num){
System.out.println("你输入的数字插入下标为: "+i); //得到插入元素的位置
break;
}
count++;
if(count==5){
System.out.println("你输入的数字插入下标为: "+(i+1));
}
}
for(int j=4;j>=i;j--){ //原来数组插入数的后面数往后移一位
nums1[j+1] =nums[j];
}
nums1[i]=num; //将输入的数插入数组
for(int j=0;j<i;j++){ //插入数之前的数保持不变
nums1[j]=nums[j];
}
for(i=0;i<nums1.length;i++){ //输出新数组
System.out.print(nums1[i]+" ");
}
数组删除一个数据:
/*
* 有一个数组元素按照从大到小的顺序排列的数组{100,90,80,70,60} 删除一个元素,要保证删除后还是降序
*
* 思路:
* (1):声明一个长度比原来数组长度小1的数组,将原来的数组元素存储到新数组中
* (2):通过输入获取删除数组的下标
* (3):从删除数据开始以及之后的元素都要往前移一位(ps:从删除数据下一个开始)
* (4):输出新的数组
*
*/
int i;
int[] nums=new int[]{100,90,80,70,60};//需要插入元素的数组
int[] nums1=new int[nums.length-1];//新数组
Scanner input=new Scanner(System.in);
System.out.println("请输入你要删除数的下标:");
int num=input.nextInt();
if(num>=0&&num<=nums.length){ //判断删除的数据是多少
System.out.println("删除的数据为: "+nums[num]);
for(i=0;i<=num-1;i++){ //将删除数据前面的数存储到新数据中
nums1[i]=nums[i];
}
for( int j=num+1;j<nums.length;j++){ //将删除数据后面的数存储到新数据中
nums1[j-1]=nums[j];
}
for(i=0;i<nums1.length;i++){ //输出新数组
System.out.print(nums1[i]+" ");
}
}else{
System.out.println("输出错误");
}
数组和内存:
int score=new int [5];
二维数组
数据类型[][] 数组名 =new 数据类型[数组长度][数组长度];
数据类型[][] 数组名=new 数据类型{{},{},{}};
int[][] arr=new int[3][3];
二维数组和内存
Arrays类
Arrays.方法(数组名);
方法名称 | 说明 |
boolean equals(array1,array2) | 比较array1和array2两个数组是否相等 |
sort(array) | 对数组array的元素进行升序排列 |
String toString(array) | 将一个数组array转换成一个字符串 |
void fill(array,val) | 把数组array所有元素都赋值为val |
copyOf(array,length) | 把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致 |
int binarySearch(array, val) | 查询元素值val在数组array中的下标(要求数组中元素已经按升序排列) |
ps:copyOf中如果新的length值小于数组长度,这输出数组前length的值,若大于原数组长度,后续输出默认值
bingrySearch在使用是必须先使用先进行sort处理,否者可能会导致精度不准确