您的位置 首页 java

Java编程!没有什么是数组搞不定的,最常用的数据类型「第13集」

Java编程!没有什么是数组搞不定的,最常用的数据类型「第13集」

“嗨~大家好!我是学长,今天的你过得还好吗?”

“这里是 offer 学院,帮你 轻松 拿offer”

– 2022.11.21 –

我们要统计一个公司50名员工的工资情况。

例如计算平均工资。按照我们之前所学的知识,在程序中我们需要声明 50个变量, salary1、salary2、…、salary50, 来分别记住每个员工的工资,然后计算平均值,这样做,是不是非常麻烦。

 double salary1 = 100;
double salary2 = 100;
...
double salary50 = 100;

double average = (salary1 + salary2 + ... + salary50) / 50;

  

有没有优化方法呢?

Java 开发者就给了我们一个解决办法,用一组相连的集合,来记着这50个员工的工资,然后对他们进行操作。

 double sum = 0;
double average;
double[] salary[100];
....
for (int i = 0; i < 100; i++) {
    sum = sum + salary[i];
} 
average = sum / 100;  

这种一组数据的集合,就叫做 “数组” ,这就是它的由来。

一、了解数组

定义:

数组是指一组数据的集合,数组中的每个数据被称为元素。在数组中可以存放任意类型的元素,但是在同一个数组里面存放的元素类型必须一致。

分类:

数组可以分为一维数组和多维数组(最常见的是 二维数组 )。

本小节我们主要先给大家讲一下一维数组。


二、一维数组

语法:

 数组类型[] 数组名 = new 数组类型[数组长度];   
数组类型[] 数组名 = new 数组类型[]{数组元素0, 数组元素1, ...};  
数组类型[] 数组名 = {数组元素0, 数组元素1, ...};  

一维数组定义:

 int[] ids = new int[100];
String[] names = new String[] {"西熙", "叮当", "糖糖", "次龙"};  

内存图:

  • 数组属于引用数据类型的变量,数组中的元素的类型可以是基本数据类型,也可以使引用数据类型。
  • 创建数组对象会在内存中开辟一整块连续的空间。
  • 数组的长度一旦确定就不可以修改。

我们在这小节中,通过一个简图,让大家体会下Java中不同数据在内存中的存放位置,也就是java中内存的简单结构。

Java编程!没有什么是数组搞不定的,最常用的数据类型「第13集」

数组在内存中的变化图如下:

Java编程!没有什么是数组搞不定的,最常用的数据类型「第13集」

1. 创建一个整型数组ids,长度为5

2. 在堆区会有创建一片区域,然后这块区域的地址引用,存放在栈区的ids 变量中。

代码演示:

 public class Demo13_1 {

    public  static   void  main(String[] args) {
        // 1. 第一种方式定义数组
        int[] ids = new int[50];
        // 输出整个数组
        System.out.println("ids = " + ids);
        // 输出数组第一个元素
        System.out.println("ids[0] = " + ids[0]);
        // 输出数组最后一个元素
        System.out.println("ids[99] = " + ids[49]);
        //下面这句会报错
//        System.out.println("ids[99] = " + ids[51]);

        // 2. 第二种方式定义数组
        String[] names = new String[] {"乔峰", "段誉", " 虚竹 ", "无崖子"};
        // 输出整个数组
        System.out.println("names = " + names);
        // 输出数组第一个元素
        System.out.println("names[0] = " + names[0]);
        // 输出数组最后一个元素
        System.out.println("names[3] = " + names[3]);

        // 3. 第三种方式定义数组
        Object[] objects = {1, "张三丰", "男", 20, "18933943343", "fff@163.com"};
        // 输出整个数组
        System.out.println("objects = " + objects);
        // 输出数组的长度
        System.out.println("数组长度 = " + objects.length);
        // 输出数组第一个元素
        System.out.println("objects[0] = " + objects[0]);
        // 输出数组最后一个元素
        System.out.println("objects[" + (objects.length - 1) +"] = " + objects[objects.length - 1]);
    }
}  

分析:

1. 直接打印数组变量,并不能输出数组里的数据,输出的是变量类型@哈希码。

2. 数组是一组相同类型的数据,有一个共同的名字,可以通过下标取访问每一个元素。

注意: 数组下标是从0开始的,对于上述定义的数组ids,长度是50,因此第一个元素时ids[0],最后一个元素是ids[49],访问ids[50]是要出错的,下标越界了。数组ids的长度,可以通过其 length 属性获取。

Java中不同数据类型元素的初始值:

三、操作数组:

在程序开发中,数组的应用非常广泛,灵活地使用数组对实际开发很重要。接下来,本节将针对数组的常见操作,如数组的遍历、最值的获取、数组的排序等,进行详细地讲解。

数组元素的访问:

 public class Demo13_2 {
    public static void main(String args[]){
        int num1[] = new int[5];
        num1[0] = 32;        //每个元素单独初始化
        num1[1] = 543;
        num1[2] = 17;
        num1[3] = 8;
        num1[4] = 95;

        int num2[] = new int[10];
        for(int i=0;i<10;i++){        //采用循环方式初始化
            num2[i] = i+1;
        }

        System.out.println("第一个数组:");
        for(int j=0;j<num1.length;j++){        //采用循环方式输出数组的所有元素
            System.out.print(num1[j] +" ");
        }

        System.out.println();
        System.out.println("第二个数组:");
        for(int x=0;x<num2.length;x++){
            System.out.print(num2[x] +" ");
        }
    }
}  

数组的属性:

数组是引用类型,具有属性,常用的数组属性就是数组的长度length,在使用时需注意:

  • 数组的长度(length)必须>=0;
  • length为只读。
  • 利用length遍历数组

数组的遍历:

 public class Demo13_3 {

    public static void main(String[] args) {
        int a[] = {1,-12,33};
        int sum = a[0];
        int max = a[0];
        int min = a[0];
        for(int i=1;i<a.length;i++){
            sum = sum+a[i];
            if(a[i]>max){
                max = a[i];
            }
            if(a[i]<min){
                min = a[i];
            }
        }
        double ave = (double)sum/3;
        System.out.println("平均值"+ave);
        System.out.println("最大值"+max);
        System.out.println("最小值"+min);
    }
}  

循环赋值:

 public class Demo13_4 {
    public static void main(String[] args) {
        // 声明一个整型数组
        int[] arr = new int[10];
        // 使用for循环对数组arr进行遍历,将数字1到10赋值给数组arr
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i + 1;
        }
        // 循环赋值完成,此时 arr = {1,2,3,4,5,6,7,8,9,10}
        // 遍历数组,打印数组中每一个元素
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "t");
        }
    }
}  

遍历获取元素:

 public class Demo13_5 {

    public static void main(String[] args) {
        // 初始化一个整型数组
        int[] arr = {1,2,3,4,5};
        // 使用for循环遍历数组arr
        for (int i = 0; i < arr.length; i++) {
            // 打印位置i的元素
            System.out.println("索引位置" + i + "的元素为:" + arr[i]);
        }
    }
}  

增强for循环:

 public class Demo13_6 {

    public static void main(String[] args) {
        // 初始化 字符串 数组 words
        String[] words = {"Welcome ", "to ", "java"};
        for(String word: words) {
            System.out.print(word);
        }
    }
}  

实例中遍历了一个单词数组,并且将它们打印成了一个句子。 for each 循环对words数组进行了遍历,并依次将每个 索引 的值赋值给了word变量,然后再执行循环体中的语句。显然 for each循环的代码看起来更加清晰。但增强for循环无法指定遍历顺序,也无法获取数组的索引。


四、学习小结

本小节我们学习了 Java 数组,知道了数组是引用数据类型。

它在创建时,会在内存中开辟一个连续的空间;数组是同一数据类型的集合。

可以使用数组下标来引用数组元素,数组元素的下标都是从0开始,使用下标不要超出范围,否则会抛出异常。

可以使用length属性获取数组的长度。我们在下一小结看看多维数组的使用与学习吧。

还是那句话:我亦无他,唯手熟尔!

我们下期再见!

END

文章来源:智云一二三科技

文章标题:Java编程!没有什么是数组搞不定的,最常用的数据类型「第13集」

文章地址:https://www.zhihuclub.com/174938.shtml

关于作者: 智云科技

热门文章

网站地图