Java入门系列-10-数组

简介:

这篇文章为你搞懂2个问题
1.什么是数组,数组是干嘛用的?
2.数组如何使用?

考试结束后,老师给二狗安排了一项任务,统计班里40名同学的平均分。按照我们之前的做法,我们可以定义40个变量然后再相加除以40求出平均分,但是这样太繁琐了,有没有更好的办法呢?那就是使用 数组。

数组

数组其实也是一个变量,顾名思义存储了一组相同类型的数据,声明一个数组就是在内存空间中分配出一连串的空间。

使用数组需要四个步骤:

1.声明数组 int[] a;

2.分配空间 a=new int[5];

3.赋值 a[0]=8;

4.处理数据 a[0]=a[0]*10;

数组中的元素通过下标进行访问,下标从0开始
数组长度是在分配完空间后是固定不变的

数组中所有的元素必须是相同的数据类型

1.声明数组:告诉计算机数据类型是什么

语法:

数据类型 数组名[];
数据类型[] 数组名;

敲一敲:

public class DemoArray {
    public static void main(String[] args) {
        int[] score;//成绩
        String[] name;//名字
    }
}

2.分配空间:告诉计算机分配几个连续的空间

语法:

数组名=new 数据类型[大小];
或者 声明数组同时并分配空间:
数据类型[] 数组名=new 数据类型[大小];

敲一敲:

public class DemoArray {
    public static void main(String[] args) {
        int[] score;//成绩
        String[] name;//名字
        score=new int[40];
        name=new String[40];
        //声明变量同时并分配空间
        int[] age=new int[40];
    }
}

3.赋值:向分配的空间中放数据

敲一敲:

public class DemoArray {
    public static void main(String[] args) {
        int[] score;//成绩
        String[] name;//名字
        score=new int[40];
        name=new String[40];
        //声明变量同时并分配空间
        int[] age=new int[40];
        name[0]="张三";//向数组中第一个元素存放数据
        name[1]="李四";//向数组中第一个元素存放数据
    }
}

但是这样一个一个去赋值太麻烦了

敲一敲:1.声明数组的同时赋值

public class DemoArray1 {
    public static void main(String[] args) {
        int[] score= {67,55,93};//自动确定长度为3
        String[] name=new String[] {"张三","李四","王五"};
    }
}

敲一敲:2.使用循环从控制台获取信息并赋值

import java.util.Scanner;

public class DemoArray2 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int[] score=new int[40];
        for (int i = 0; i < score.length; i++) {
            score[i]=input.nextInt();
        }
    }
}

length 是数组的属性,用于获取数组的长度

4.处理数据

敲一敲:遍历数组

public class DemoEachArray {

    public static void main(String[] args) {
        String[] name= {"香蕉","菠萝","西瓜"};
        for (int i = 0; i < name.length; i++) {
            String temp=name[i];
            System.out.println(i+" "+temp);
        }
    }
}

可以打印数组,也可重新赋值等操作

工具类Arrays

Arrays类包含操作数组的各种方法,使用这个类需要
加入一行代码
import java.util.Arrays; 引入后使用。

方法名 说明
sort() 对指定的数组按数字升序进行排序。
toString() 返回指定数组内容的字符串表示形式。
copyOf() 复制指定的数组到一个新数组,并指定新数组的长度

敲一敲:sort的使用

import java.util.Arrays;

public class DemoArraysSort {
    public static void main(String[] args) {
        int[] ages= {33,18,37,55,3};
        Arrays.sort(ages);
        for(int i=0;i<ages.length;i++) {
            System.out.println(i+" "+ages[i]);
        }
    }
}

敲一敲:toString的使用

import java.util.Arrays;

public class DemoArraysToString {
    public static void main(String[] args) {
        String[] name= {"张三","李四","王五","赵六"};
        String result=Arrays.toString(name);
        System.out.println(result);
        double[] money= {55.4,34,66,23.3};
        System.out.println(Arrays.toString(money));
    }
}

敲一敲:copyOf的使用

import java.util.Arrays;

public class DemoArraysCopyOf {
    public static void main(String[] args) {
        int[] ages= {33,18,37,55,3};
        int[] newArray1=Arrays.copyOf(ages, 3);
        System.out.println("新数组:"+Arrays.toString(newArray1));
        int[] newArray2=Arrays.copyOf(ages,8);
        System.out.println("新数组:"+Arrays.toString(newArray2));
    }
}

使用 copyOf() 时,如果指定的副本数组的长度小于源数组的长度,后面的元素都将被截断。如果指定的副本数组的长度大于源数组的长度,多出的元素都将使用默认值。

数组元素默认值

如果一个数组已经指定了长度,但是没有给元素赋值,那么没有赋值的元素都会有默认值

类型 默认值
String null
int 0
double 0.0
boolean false
Object null

敲一敲:体验各种类型的默认值

import java.util.Arrays;

public class DemoDefaultValue {
    public static void main(String[] args) {
        String[] name=new String[10];
        System.out.println("字符串:"+Arrays.toString(name));
        int[] age=new int[10];
        System.out.println("整数:"+Arrays.toString(age));
        double[] money=new double[10];
        System.out.println("小数:"+Arrays.toString(money));
        Object[] obj=new Object[10];
        System.out.println("对象:"+Arrays.toString(obj));
        boolean[] results=new boolean[10];
        System.out.println("布尔值:"+Arrays.toString(results));
        char[] chrs=new char[10];
        System.out.println("字符:"+Arrays.toString(chrs));
        System.out.println((int)chrs[0]);//字符对应的整数
    }
}

试一试:

1.从控制台中输入5个人的年龄,存入数组中,求出最小的年龄

2.将一组乱序的字符排序后,进行升序和逆序输出

搜索关注公众号「享智同行」,第一时间获取技术干货,公众号回复010 获取本次练习答案!

相关文章
|
1月前
|
安全 Java 数据库连接
2025 年最新 Java 学习路线图含实操指南助你高效入门 Java 编程掌握核心技能
2025年最新Java学习路线图,涵盖基础环境搭建、核心特性(如密封类、虚拟线程)、模块化开发、响应式编程、主流框架(Spring Boot 3、Spring Security 6)、数据库操作(JPA + Hibernate 6)及微服务实战,助你掌握企业级开发技能。
251 3
|
1月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
12天前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
21天前
|
前端开发 Java 数据库连接
帮助新手快速上手的 JAVA 学习路线最详细版涵盖从入门到进阶的 JAVA 学习路线
本Java学习路线涵盖从基础语法、面向对象、异常处理到高级框架、微服务、JVM调优等内容,适合新手入门到进阶,助力掌握企业级开发技能,快速成为合格Java开发者。
267 3
|
1月前
|
NoSQL Java 关系型数据库
Java 从入门到进阶完整学习路线图规划与实战开发最佳实践指南
本文为Java开发者提供从入门到进阶的完整学习路线图,涵盖基础语法、面向对象、数据结构与算法、并发编程、JVM调优、主流框架(如Spring Boot)、数据库操作(MySQL、Redis)、微服务架构及云原生开发等内容,并结合实战案例与最佳实践,助力高效掌握Java核心技术。
218 1
|
1月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
1月前
|
Java 编译器 API
Java Lambda表达式与函数式编程入门
Lambda表达式是Java 8引入的重要特性,简化了函数式编程的实现方式。它通过简洁的语法替代传统的匿名内部类,使代码更清晰、易读。本文深入讲解Lambda表达式的基本语法、函数式接口、方法引用等核心概念,并结合集合操作、线程处理、事件回调等实战案例,帮助开发者掌握现代Java编程技巧。同时,还解析了面试中高频出现的相关问题,助你深入理解其原理与应用场景。
|
12天前
|
Java API 数据库
2025 年最新 Java 实操学习路线,从入门到高级应用详细指南
2025年Java最新实操学习路线,涵盖从环境搭建到微服务、容器化部署的全流程实战内容,助你掌握Java 21核心特性、Spring Boot 3.2开发、云原生与微服务架构,提升企业级项目开发能力,适合从入门到高级应用的学习需求。
235 0
|
22天前
|
监控 Java API
2025 年全新出炉的 Java 学习路线:从入门起步到实操精通的详细指南
2025年Java学习路线与实操指南,涵盖Java 21核心特性、虚拟线程、Spring Boot 3、微服务、Spring Security、容器化部署等前沿技术,助你从入门到企业级开发进阶。
188 0