首页 > 编程语言 >Java数组

Java数组

时间:2023-07-15 22:44:30浏览次数:35  
标签:arr Java int System 数组 println out

0x01 认识数组

1、什么是数组

数组就是用来存储一批同种类型数据的容器。

int[] arr = {20, 10, 80, 60, 90};
String[] names = {"张三", "李四", "王二"};

2、为什么要用数组

假如用变量学生名字,然后完成随机点名功能,怎么实现?存在有什么问题?

String name1 = "张誉";
String name2 = "刘疏桐";
String name3 = "田启峰";
...
...
String name68= "张学颖";
String name69= "李沁霖";
String name70= "陈侃";

从上面代码可以发现使用变量会导致代码繁琐,大量变量的定义,业务功能实现麻烦。那么下面使用数组,数组适合做一批同种类型数据的存储。

String[] names = {“张誉”, “刘疏桐”, “田启峰”,… “张学颖”, “李沁霖”, “陈侃”,};

0x02 数组的定义

1、静态初始化数组

image-20230715185840472

数组变量名中存储的是数组在内存中的地址,数组是引用类型。完整格式写法如下

//数据类型[]  数组名 = new 数据类型[]{元素1,元素2 ,元素3… };

double[] scores = new double[]{89.9, 99.5, 59.5, 88.0};
int[] ages = new int[]{12, 24, 36};

简化格式写法

//数据类型[] 数组名 = { 元素1,元素2 ,元素3,… };

int[] ages = {12, 24, 36};

2、动态初始化数组

定义数组的时候只确定元素的类型和数组的长度,之后再存入具体数据

//写法  数据类型[] 数组名 = new 数据类型[长度];
int[] arr = new int[3] 

image-20230715192351259

public class ArrayDemo {
    public static void main(String[] args) {
        //1.先定义
        int[] arr = new int[3];  // 默认值 arr = [0,0,0]
        System.out.println(arr[0]); //0
        System.out.println(arr[1]); //0
        System.out.println(arr[2]); //0
        //2.后赋值
        arr[0] = 12;
        arr[1] = 18;
        arr[2] = 32;
        System.out.println(arr[0]); //12
        System.out.println(arr[1]); //18
        System.out.println(arr[2]); //32
    }
}

3、定义数组的注意事项

1)“数据类型[] 数组名”也可以写成 “数据类型 数组名[] ”。

int[] ages =...;  
int ages[] =...;  

double[] scores = ...;
double scores[] = ...;

2)什么类型的数组存放什么类型的数据,否则报错。

3)数组一旦定义出来,程序执行的过程中,长度、类型就固定了。

4)元素默认值规则

image-20230715193316511

5)两种初始化的的使用场景总结、注意事项说明

动态初始化:只指定数组长度,后期赋值,适合开始知道数据的数量,但是不确定具体元素值的业务场景。

静态初始化:开始就存入元素值,适合一开始就能确定元素值的业务场景。

两种格式的写法是独立的,不可以混用。

//错误写法
int[] arrs = new int[3]{30,40,50};

0x03 数组的访问及其遍历

image-20230715185810337

1、访问数组的全部数据

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = {12, 24, 36};
        //访问数组的全部数据
        System.out.println(arr[0]);
        System.out.println(arr[1]);
        System.out.println(arr[2]);
    }
}

2、修改数组中的数据

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = {12, 24, 36};
        //修改数组中的数据
        arr[0] = 66;
        arr[2] = 100;
        System.out.println(arr[0]);  //66
        System.out.println(arr[1]);
        System.out.println(arr[2]);  //100
    }
}

3、访问数组的元素的个数

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = {12, 24, 36};
        //访问数组的元素的个数
        System.out.println(arr.length);  //3
    }
}

4、数组的最大索引

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = {12, 24, 36};
        //获取数组的最大索引,前提是元素个数大于0,否则会抛出异常
        System.out.println(arr.length - 1);  //2
    }
}

5、数组的遍历

遍历:就是一个一个数据的访问。

public class ArrayDemo {
    public static void main(String[] args) {
        int[] arr = {12, 24, 36};
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

0x04 数组的案例

1、数据遍历-求和

需求:某部门5名员工的销售额分别是:16、26、36、6、100,请计算出他们部门的总销售额。

public class ArrayDemo {
    public static void main(String[] args) {
        //1.定义数组存储销售额
        int[] money = {16, 26, 36, 6, 100};
        //2.定义一个初始变量,用于累加求和
        int sum = 0;
        //3.遍历数组中的每个数据
        for (int i = 0; i < money.length; i++) {
            sum += money[i];
        }
        System.out.println(sum);
    }
}

2、评委打分案例

案例需求:某唱歌比赛,需要开发一个系统:可以录入6名评委的打分,录入完毕之后立即输出平均数作为选手得分

import java.util.Scanner;

public class ArrayDemo {
    public static void main(String[] args) {
        //某唱歌比赛,需要开发一个系统:可以录入6名评委的打分,录入完毕之后立即输出平均数作为选手得分

        //1.定义一个动态初始化的数组,负责后期存储6个评委的打分
        double[] scores = new double[6];
        Scanner sc = new Scanner(System.in);

        //2.遍历数组中的每个位置,录入评委的分数,存入到数组中去
        for (int i = 0; i < scores.length; i++) {
            System.out.print("请输入当前第" + (i + 1) + "个评委的分数: ");
            double score = sc.nextDouble();
            scores[i] = score;
        }

        //3.遍历数组中的每个元素进行求和
        double sum = 0;
        for (int i = 0; i < scores.length; i++) {
            sum += scores[i];
        }
        System.out.println("选手最终的得分是" + sum / scores.length);
    }
}

0x05 数组在计算机中的执行原理

1、Java内存分配、数组内存图

image-20230715221719287

image-20230715221622455

2、两个变量指向同一个数组

image-20230715221828561

0x06 数组使用的常见问题

image-20230715221931996

标签:arr,Java,int,System,数组,println,out
From: https://www.cnblogs.com/charonlight/p/17557126.html

相关文章

  • java写入数据 加锁操作
    publicstaticvoidmain(Stringargs[]){ ConnectionconnMySQL=null; Statementstmt=null; StringstrJDBC_DRIVER="com.mysql.cj.jdbc.Driver";//java8的链接写法,java5把cj.去掉就行StringstrDB_URL="jdbc:mysql://localhost:3306......
  • 2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一
    2023-07-15:给你一个非递减的正整数数组nums和整数K,判断该数组是否可以被分成一个或几个长度至少为K的不相交的递增子序列。输入:nums=[1,2,2,3,3,4,4],K=3。输出:true。答案2023-07-15:大体步骤如下:1.初始化计数变量cnt和最大计数变量maxCnt,初始值都为1。2.从索引......
  • JavaScript
    html<!DOCTYPEhtml><htmllang="en"xmlns="http://www.w3.org/1999/html"><head><metaname="author"content="weiyupeng"><metaname="time"content="2023/7/1020:23"......
  • java-base-two
    ArrayList扩容机制扩容一半(默认方式):当容量不足时,ArrayList将容量扩大为原来的1.5倍,即将原来的容量除以2,然后加上原来的容量。       如果新创建的集合有带初始值,默认就是传入的大小,在初始化时就会用传入的大小不会扩容,当大小不够后再去扩容。在方法中定义......
  • 2023-07-15:给你一个 非递减 的正整数数组 nums 和整数 K, 判断该数组是否可以被分成一
    2023-07-15:给你一个非递减的正整数数组nums和整数K,判断该数组是否可以被分成一个或几个长度至少为K的不相交的递增子序列。输入:nums=[1,2,2,3,3,4,4],K=3。输出:true。答案2023-07-15:大体步骤如下:1.初始化计数变量cnt和最大计数变量maxCnt,初始值都为1。2......
  • 吊打面试官的16000字JVM专属秘籍,又一个Java面试神器!
    前言吊打面试官的16000字JVM专属秘籍,总共包含三部分的内容,从基础到进阶带大家一步步深入理解JVM!学完就可以在简历上面直接写上精通JVM!因为篇幅限制这里只给大家做简单的一个介绍,也就是进行一个大点的梳理,每个大点下面又有很多细枝末节的技能知识需要大家好好学透,并且能够掌握吸收到......
  • Java 集合和流
    (目录)一、从集合中获取流JavaStreamAPI提供了一种更实用的编程方法来迭代和处理集合等元素。JavaStreamAPI是在Java8中添加到Java中的。流大部分是和Javalambda表达式一起使用,不熟悉lambda表达式的建议了解之后阅读。可以通过调用给定集合的方法从集合中获取流......
  • Java学习day04: 方法和数组
    我在B站上大学......
  • Java重要类型的转换
    类型转换由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。低--------------------------------------------------------->高byte,short,char--->int-->long-->float-->double运算中,不同类型的数据先转化为同一类型,然后进行运算。 ......
  • JavaDoc生成文档
    JavaDoc生成文档javados命令是用来生成自己API文档的参数信息:@author作者名@version版本号@since指明需要最早使用的jdk版本@param参数名@return返回值情况@throws异常抛出情况利用命令行窗口生成API文档:右击Doc----->点击OpenInExplorer找到文档所......