数组基础知识

数组
1、定义:存储相同类型的一组数据
格式:数组类型 []数组名=new 数组类型[数组长度]
基本要素:标识符、数组元素、元素下标(从0开始)、元素类型
初始化数组:
方式(1)int []nums=new int[3];

方式(2)int nums[]={1,2,3};

方式(3)int[] nums=new int[]{1,2,3,};

nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=8; //常见错误:数组下标越界
2、获取数组长度:nums.length
数组默认值:
整型byte short int long:0
浮点型float double:0.0
字符串String:null
布尔boolean:fasle
字符型char:’\u0000’
3、数组的操作
(1)数组遍历
正向遍历:for(int i=0;i<nums.length;i++){ System.out.println(nums[i]) }
逆向遍历:for(int i=nums.length-1;i>=0;i–){ System.out.println(nums[i]) }
增强for循环:for(int temp:nums){ System.out.println(temp) }
(2)数组的“增删改查”
Scanner input=new Scanner(System.int);
int []names=new int[5]{};
int index=-1;
int add=-1;
for(int i=0;i<5;i++){
if(names[i].equals(“王五”)){ //判断是否存在王五
index=i;
break;
}else if(names[i].equals(“null”)){ //判断是否存在空位
add=i;
break;
}
}
修改:if(index!=-1){
names[index]=“田七”; //王五换成田七
}else {
System.out.println("\n未找到王五!");
}
删除:if(index!=-1){
for(int n=index+1;n<names.length;n++){
names[n-1]=names[n];
}
names[names.length-1]=“null”;
}else{
System.out.println("\n不存在李四!");
}
增加:if(add!=-1){
names[add]=“王五”;
}else{
System.out.println("\n数组已满!");
}
4、冒泡排序:N个数字来排队
两两相比小靠前
外层循环控制轮数N-1
内层循环控制两两相比的次数N-1-I
下标 0 1 2 3 4
原始 16 25 9 90 23
一轮 16 9 25 23 90 比4=5-1-0次
二轮 9 16 23 25 90 比3=5-1-1次
三轮 9 16 23 25 90 比2=5-1-2次
四轮 9 16 23 25 90 比1=5-1-3次
5、Arrays类的应用
(1)比较两个数组是否相等:boolean flag= Arrays.equals(数组1,数组2);
(2)升序排序:Arrays.sort(数组名);
(3)数组转换成字符串:System.out.println(Arrays.toString(数组名));
(4)填充数组:Arrays.fill(数组名,填充元素值);
(5)复制数组:int []num3=Arrays.copyOf(数组名,新数组长度);
(6)根据元素值反查下标(前提是升序):int index=Arrays.binarySearch(数组名,元素值);
6、插入算法
(1)找到插入位置下标
int nums[]={1,2,3,4,5};
int num=input.nextInt();
int index=nums.length-1;
for(int i=0;i<nums.length;i++){
if(nums[i]>num){
index=i;
break;
}
}
(2)从下标位置向后覆盖
for(int j=nums.length-1;j>index;j–){
nums[j]=nums[j-1];
}
(3)直接替换
nums[index]=num;
7、二维数组:
int nums[][]={{1,2},{1,2,3},{1,2}};
int[][] nums=new int[3][5];
二维数组遍历
for(int i=0;i<nums.length;i++){
for(int j=0;j<nums[i].length;j++){
System.out.print(nums[i][j]+" ");
}
System.out.println();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值