JAVA-基础⑥数组

1、 数组声明时内存空间存储关系

 

第一行是一个byte的变量

第二行是byte长度为8的数组(重点:他们是连续的)

第三行是一个short的变量

第四行是一个长度为4的short的数组

第五行是一个int变量

第六行是一个长度为2的int数组

第七行是一个long的变量

……

声明一个变量就是在内存空间划出一块适合的空间

声明一个数组就是在内存空间划出一串连续的空间

 

我们的数组对象声明后会在栈内存中存储该变量,但是我们存储的只是一个堆内存的引用地址。

我们实际修数组的值是修改堆内存位置的值。

2、 什么是数组

数组的本质是内存中的一串连续的空间

数组是用来存储固定长度的变量的一个整体

可以理解为:

一栋楼房和一个房间的关系

一个房间是一个变量,一栋楼房是一个数组

tips:数组只可以存储声明是规定的类型。

总结

概念:【一组】【类型相同的】【连续的】存储空间的表示

优点:

​ 一个存储单位存多个值

​ 空间连续(遍历)

​ 下标(索引)定位

缺点:

​ 长度固定

​ 类型固定

​ 插入和删除

3、 数组的使用

标准的四步骤:

public class iTest01 {
      public static void main(String[] args){
          //第一步声明:数据类型[] 数组名称;
          String[] nameArray;
          //或者你可以写成 String nameArray[];
          //第二部初始化:数组名称 = new 数组类型[长度];
          nameArray = new String[30];
          //第三步赋值:数组名称[下标] =  值;
          //下标取值范围:0~names.length-1
          //吐过下标越界会报异常:ArrayIndexOutofBoundsException
          nameArray[0] = "张三";
          nameArray[1] = "李四";
          nameArray[2] = "王五";
          nameArray[3] = "赵六";
          nameArray[4] = "陈七";
          nameArray[5] = "刘八";
          //第四步使用
          System.out.println(nameArray[2]);
      }
  }

特殊方式:

​ 数据类型[] 数组名称 = {值1,……值n};

  String[] nameArray={"张三","李四","王五","赵六","陈七","刘八"};

​ 在一个数组中,如果我们使用一般的声明方式,我们会将数组的整体长度进行声明,并且将所有的值都附上默认初始值。

注意:数组初始化后所有元素都有默认无效值

​ string:null

​ char:(char)0

​ int:0

​ double:0.0

​ boolean:false

如果是使用的特殊方式,则会自动将长度变为你写入的长度,不存在默认初始值的问题。

特殊方式二:

  int[ ] scores = new int[ ]{89,79,76};

4、 获取数组的总长度

通过数组的变量名称,调用

  int[ ] scores = new int[ ]{89,79,76};
  //可以获德数组的长度
  int i = scores.length;

5、 求最大值

  public static void main(String[] args){
      //此时我们会声明一个长度为6的int数组,并且将所有位置设置为int类型的默认值0
      int[] intArray = new int[6];
      //将0-4位赋值12345
      intArray[0]=1;
      intArray[1]=2;
      intArray[2]=3;
      intArray[3]=4;
      intArray[4]=5;
      //打印这个数组
      for(int i=0;i<6;i++){
          System.out.ptintln("intArray["+i+"]="+intArray[i]);
      }
      
      //需要询问用户,我们插入数字到什么位置
      System.out.println("请问你需要插入到哪个位置:");
      Scanner input = new Scanner(System.in);
      int index = input.nextInt();
      Syetem.out.println("请问你需要插入的数字是:");
      int iNum = input.nextInt();
      
      //循环先将所有的位置向后移动一位
      for(int i = (intArray.length-1);i>index;i--){
          inArray[i]=intArray[i-1];
      }
      
      //将值附到我们的移动位置
      intArray[index]=iNum;
      
      //打印一次数组
      for(int i=0;i<6;i++){
          System.out.ptintln("intArray["+i+"]="+intArray[i]);
      }
  }

6、 增强遍历for循环

对于数组、集合这类数据类型,我们可以使用增强遍历for循环

使用语法位

for(数据类型 变量名 : 数组名){

​ //正常使用改变量,如:

​ System.out.print(变量名);

}

  
  int[] intArray = new int[6];
          intArray[0]=99;
          intArray[1]=85;
          intArray[2]=82;
          intArray[3]=63;
          intArray[4]=60;
          
          for(int i:intArray){
              System.out.println("intArray["+i+"]="+intArray[i]);
          }

7、 在已确定顺序的数列中插入一个数字

public static void main(String[] args){
      //此时我们会声明一个长度为6的int数组,并且将所有位置设置为int类型的默认值0
      int[] intArray = new int[6];
      //将0-4位赋值12345
      intArray[0]=1;
      intArray[1]=2;
      intArray[2]=3;
      intArray[3]=4;
      intArray[4]=5;
      //打印这个数组
      for(int i=0;i<6;i++){
          System.out.ptintln("intArray["+i+"]="+intArray[i]);
      }
      
      //需要询问用户,我们插入数字到什么位置
      System.out.println("请问你需要插入到哪个位置:");
      Scanner input = new Scanner(System.in);
      int index = input.nextInt();
      Syetem.out.println("请问你需要插入的数字是:");
      int iNum = input.nextInt();
      
      //循环先将所有的位置向后移动一位
      for(int i = (intArray.length-1);i>index;i--){
          inArray[i]=intArray[i-1];
      }
      
      //将值附到我们的移动位置
      intArray[index]=iNum;
      
      //打印一次数组
      for(int i=0;i<6;i++){
          System.out.ptintln("intArray["+i+"]="+intArray[i]);
      }
  }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值