Java数组中的一维数组

一维数组

数组四要素

标识符、数组元素、元素下标(从0开始)、元素类型


数组的使用

1.声明:
告诉计算机数据类型,声明数组时不规定长度
2.分配空间:
告诉计算机分配几个连续空间数据元素类型不同,元素初始值不同int默认为0、double默认为0.0、string默认为null
3.赋值
4.处理数据

int[] array;//声明数组,或者int array[];
array = new int[5];//分配五个连续空间,数组长度可以是键盘输入的数据
a[0] = 8;//赋值
a[0] = a[0]+10;//处理数据

数组的赋值方法

1.边声明边赋值

int[] array = {0,1,2,3,4};
int[] array = new int[]{0,1,2,3,4};//不能规定数组长度

2.动态的从键盘录入并赋值

int[] array = new int[5];//可以同时声明并分配空间
for(int i=0; i<array.length; i++){
    array[i] = input.nextInt();
}
System.out.print(Arrays.toString(array));//输出

如何来遍历数组呢

1.使用for循环来遍历数组下标
2.使用增强型for(foreach)
只能遍历,不能赋值
更安全,不会出现数组越界

int[] array = {0,1,2,3,4};
for(int a:array){//将数组中的元素依次赋值给a
    System.out.print(a);
}

变量与内存关系是怎样的

1.数组(引用数据类型)
栈内存:存放数组名,空间有限,速度更快
堆内存:存放元素,空间可扩展
2.普通变量(基本类型)
直接将变量名和变量值存放到栈内存


插入数值并保持降序的原理

1.找到插入位置的下标
2.数组扩容(长度加1)
3.将后面的元素全部往后移一位
从最后一位开始移,从第一位移会导致覆盖后面所有元素

int arr[] = {70,56,20,4,2};
    System.out.println("arr:"+Arrays.toString(arr));
    int arr1[] = new int[arr.length+1];//重新定义一个数组arr1为插入数后的数组,声明长度为arr长度加1
    System.out.println("请输入一个整数:");
    int num = input.nextInt();
    //int index = 0;
    //插入数的下标初始为0,当插入数比所有数都小的时候,应该放在数组最后,会出错,永远不满足arr[i]<=num
    int index = arr1.length-1;
    //找到插入数的下标
    for(int i=0; i<arr.length; i++){
        if(arr[i]<=num){
            index = i;
            break;
        }
    }
    System.out.println("插入的下标为:"+index);
    for(int i=0; i<arr.length; i++){//将arr的元素赋值给arr1,未赋值的默认为0
        arr1[i] = arr[i];
    }
    System.out.println("arr1:"+Arrays.toString(arr1));
    //将下标index后的数往后挪一位,从后往前挪,如果从前往后,会导致arr[index]被num替换,后面全为num
    for(int i=arr1.length-1; i>index; i--){
        arr1[i] = arr1[i-1];
    }
    arr1[index]=num;
    System.out.print("插入数"+num+"后arr1为:"+Arrays.toString(arr1));
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值