2.3 数组

数组的含义:

数组指的是一种容器,可以用来储存同种数据类型的多个值

注:数组容器在存储数据的时候,需要结合隐式转换考虑
例如:int类型的数组容器 , byte , short , int 类型的数据都是可以存储的
建议:容器的类型,和储存的数据类型保持一致

数组的定义:

1. 格式一: 数据类型[ ] 数组名
例: int   [ ] array
2. 格式二: 数据类型   数组名 [ ]
例:int    array [ ]

数组的初始化:

就是在内存中,为数组容器开辟空间,并将数据存入容器的过程

数组初始化的两种方式:

1. 静态初始化:

完整格式:  数据类型[ ] 数组名 = new 数据类型[ ] { 元素1,元素2,元素3….};
例: int [ ] array = new int [ ]{1,2,3};
简化格式 :数据类型[ ] 数组名 = { 元素1,元素2,元素3….};
例: int [ ] array = {1,2,3};

代码演示:

public class IT梦 {  
    public static void main(String[] args) {  
        //将1,2,3,4,5存入数组  
        //完整格式:  
        int [] arr1 = new int[]{1,2,3,4,5};  
        //简化格式:  
        int [] arr2 = {1,2,3,4,5};  
    }  
}

 2.动态初始化:

初始化时只指定数组长度,由系统为数组分配初始值
格式: 数据类型 [ ] 数组名 = new 数据类型[数组长度];

代码演示:

public class IT梦 {  
    public static void main(String[] args) {  
        int [] arr = new int[5];  
    }  
}

数组默认初始化值的规律:

1. 整数类型:默认初始化值为0
2. 小数类型:默认初始化值为0.0
3. 字符类型:默认初始化值’/u0000′—-空格
4. 布尔类型:默认初始化值为false
5. 引用数据类型:默认初始化值为null

动态初始化和静态初始化的区别:

1.动态初始化:手动指定数组长度,由系统给出默认初始化值
只明确元素个数,不明确具体数值,推荐使用动态初始化
2.静态初始化:手动指定数组元素,系统会根据元素的个数,计算出数组的长度
需求中已经明确了要操作的具体数据,直接静态初始化即可

 数组的地址值:

 表示数组在内存中的位置
public class IT梦 {  
     public static void main(String[] args) {  
         int [] arr1 = new int[]{1,2,3,4,5};  
         System.out.println(arr1);  
    }  
}

图片[1]-2.3 数组-IT熊技术站

拓展:

1. [ : 表示当前是一个数组
2. I  :表示当前数组里面的元素都是int类型的
3. @ :表示一个间隔符号(固定格式)
4. 4eec7777:数组真正的地址值

数组元素访问:

格式:   数组名[索引];
索引:也叫做下标,角标
解释: 假如一个数组有三个元素, 元素1的索引就是0,元素2的索引就是1,元素3的索引就是2 …… 以此类推

索引的特点:

从0开始,逐个+1增长,连续不间断

代码演示:

public class IT梦 {  
    public static void main(String[] args) { 
    //获取数组中的第一个元素 
        int [] arr1 = {1,2,3,4,5};  
        int number = arr1 [0];  
        System.out.println(number);  
    }  
}

图片[2]-2.3 数组-IT熊技术站

public class IT梦 {  
    public static void main(String[] args) {  
        //把数据存到数组当中  
        int [] arr1 = {1,2,3,4,5};  
        arr1 [0] = 100;  
        int number = arr1[0];  
        System.out.println(number);  
    }  
}

图片[3]-2.3 数组-IT熊技术站

数组的遍历:

将数组中所有的内容取出来,取出来之后可以打印,求和,判断…..
注意:遍历指的是取出数据的过程,不要局限的理解为遍历就是打印

代码演示:

public class IT梦 {  
     public static void main(String[] args) {  
         int [] arr = {1,2,3};
         //在java中,关于数组的一个长度属性---length
         //调用方式:数组名.length  
         for (int i = 0; i < arr.length; i++) {  
             System.out.println(arr[i]);  
        }  
    }  
}

图片[4]-2.3 数组-IT熊技术站

数组常见问题:

当访问了数组中不存在的索引,就会引发索引越界异常

数组练习:

1.求最值:已知数组元素为{33,5,22,44,55} ; 请用程序找出数组中的最大值并打印

答案:

[content_hide]

public class IT梦 {  
      public static void main(String[] args) {  
          int [] arr = {33,5,22,44,55};  
          int max = arr[0];  
          for (int i = 0; i < arr.length; i++) {  
             if(arr[i] > max){  
                max=arr[i];  
             }  
        }  
        System.out.println(max);  
    }  
}

图片[5]-2.3 数组-IT熊技术站

[/content_hide]

2.求和:生成十个1~100之间的随机数存入数组,求出这些数的和

答案:

[content_hide]

import java.util.Random;

public class IT梦 {  
    public static void main(String[] args) {  
         int [] arr = new int[10];  
         Random r = new Random();  
         for (int i = 0; i < arr.length; i++) {  
             int number = r.nextInt(100)+1;  
             arr[i] = number;  
        }  
         int result = 0;  
         for (int i = 0; i < arr.length; i++) {  
              result = result + arr[i];  
        }  
         System.out.println("数组中所有数的和为" + result);  
    }  
}

图片[6]-2.3 数组-IT熊技术站

[/content_hide]

3.打乱数组中的数据:定义一个数组,存入1~5,打乱数组中的数据

答案:

[content_hide]

import java.util.Random;


public class IT梦 {  
      public static void main(String[] args) {  
          int [] arr = {1,2,3,4,5};  
          Random r = new Random();  
          for (int i = 0; i < arr.length; i++) {  
              int number = r.nextInt(arr.length);  
              int temp = arr[i];  
              arr[i] = arr[number];  
              arr[number] = temp;  
        }  
          for (int i = 0; i < arr.length; i++) {  
              System.out.print(arr[i] + " ");  
        }  
  
    }  
}

图片[7]-2.3 数组-IT熊技术站

[/content_hide]

 

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容