这篇文章为你搞懂2个问题

1.什么是数组,数组是干嘛用的?

2.数组如何使用?

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

数组

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

元素1 元素2 元素3 ……

使用数组需要四个步骤:

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 获取本次练习答案!

Java入门系列-10-数组的更多相关文章

  1. Java 集合系列10之 HashMap详细介绍(源码解析)和使用示例

    概要 这一章,我们对HashMap进行学习.我们先对HashMap有个整体认识,然后再学习它的源码,最后再通过实例来学会使用HashMap.内容包括:第1部分 HashMap介绍第2部分 HashMa ...

  2. Java 集合系列 10 Hashtable详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  3. 夯实Java基础系列10:深入理解Java中的异常体系

    目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...

  4. Java入门系列-19-泛型集合

    集合 如何存储每天的新闻信息?每天的新闻总数是不固定的,太少浪费空间,太多空间不足. 如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,可以使用Java集合框架. Java 集合框架提 ...

  5. Java入门系列之集合ArrayList源码分析(七)

    前言 上一节我们通过排队类实现了类似ArrayList基本功能,当然还有很多欠缺考虑,只是为了我们学习集合而准备来着,本节我们来看看ArrayList源码中对于常用操作方法是如何进行的,请往下看. A ...

  6. Java入门系列(七)Java 集合框架(JCF, Java Collections Framework)

    Java 集合概述 List.Set.Map可以看做集合的三大类 java集合就像一个容器,可以将多个对象的引用丢进该容器中. Collection和Map是java集合的根接口. List List ...

  7. Java入门系列-26-JDBC

    认识 JDBC JDBC (Java DataBase Connectivity) 是 Java 数据库连接技术的简称,用于连接常用数据库. Sun 公司提供了 JDBC API ,供程序员调用接口和 ...

  8. Java入门 第10天 ,理解数组

    数组的特点: 1.内容的类型固定,不会int String 两个类型一起,要么是int类型 要么是String类型 或者其他类型. 2.长度是固定的,例:String [ ]   myArray  = ...

  9. Java基础系列--04_数组

    一维数组: (1)数组:存储同一种数据类型的多个元素的容器. (2)特点:每一个元素都有编号,从0开始,最大编号是数组的长度-1. 编号的专业叫法:索引 (3)定义格式 A:数据类型[] 数组名;(一 ...

随机推荐

  1. C#多线程编程实战1.3等待线程

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  2. angular 管道

    import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'multi' }) export class MultiPipe ...

  3. 以太坊系列之六: p2p模块--以太坊源码学习

    p2p模块 p2p模块对外暴露了Server关键结构,帮助上层管理复杂的p2p网路,使其集中于Protocol的实现,只关注于数据的传输. Server使用discover模块,在指定的UDP端口管理 ...

  4. MooseFS分布式文件系统介绍

    一.简介 MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本.对于访问的客户端或者用户来说,整个分布式网络文件系统 ...

  5. 【离散数学】 SDUT OJ 哪款赛车最佳?

    哪款赛车最佳? Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 四名专家对四款赛车进行 ...

  6. TextInput

    TextInput /** TextInput 是一个允许用户在应用中通过键盘输入文本的基本组件* 本组件的属性提供了多种特性的配置,如自动完成,自动大小写,占位文字,键盘类型等* 常用:* plac ...

  7. @ApiParam @PathVariable @RequestParam三者区别

    转载:https://www.cnblogs.com/xu-lei/p/7803062.html @ApiParam @PathVariable @RequestParam三者区别 1.@ApiPar ...

  8. js中自己实现bind函数的方式

    最近由于工作比较忙,好久都没时间静下心来研究一些东西了.今天在研究 call 和 apply 的区别的时候,看到 github 上面的一篇文章,看完以后,感觉启发很大. 文章链接为 https://g ...

  9. Android配置横屏资源与Activity生命周期

    屏幕旋转会改变设备配置(device configguration).设备设置的特征有:屏幕方向.屏幕像素密度.屏幕尺寸.键盘类型.底座模式以及语言等.    当屏幕发现旋转时(设备配置更改),And ...

  10. Windows 环境 ABP前端运行 ng test 无法执行

    Command: ng test Error Information: Schema validation failed with the following errors: Data path &q ...