这篇文章为你搞懂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. Sobel算法

    最近看了一些Sobel算法,并试了一下,源码如下: private void Sobel(Bitmap img) { int width = img.Width; int height = img.H ...

  2. stream.fail() eof() EOF

    ifstream infile("student.dat"); while((c=infile.get())!=EOF){}    //EOF的值是-1 但在 #include&l ...

  3. 在didSelectRowAtIndexPath 里面取cell的方法

    1.选中了tableview的cell的某一行调用的代理方法 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(N ...

  4. 【转】C# String 与 Char[] 数组 相互转换

    源地址:http://blog.csdn.net/razilfelix/article/details/52289663 string 转换成 Char[] string ss = "abc ...

  5. 八大排序算法的python实现(五)堆排序

    代码 #coding:utf-8 #author:徐卜灵 # 堆排序适用于记录数很多的情况 #与快速排序,归并排序 时间复杂一样都是n*log(n) ######################### ...

  6. Hibernate的工作流程以及三种状态

    Hibernate的工作流程: 1. 读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3. 打开Sesssion 4.创建事务Transation 5. 持久化操作 6. ...

  7. 获取表单提交的数据getParameter()方法

    请求对象:request public String getParameter(String name); 通过request的getParameter(String name)方法获取 表单里面的n ...

  8. 关于 SimpleMembership 中 CreateDate 的问题

    使用 WebMatrix.WebData.WebSecurity.CreateUserAndAccount(model.UserName, model.Password,                ...

  9. Mac的Parallels在启动Win的时候让它独立全屏窗口

    这里备忘一下,由于经常需要***,Win方法比较多少,所以使用Parallels在Win下***还是很有必要的,为了使用使用方便,一般让Parallels启动系统之后自动生成一个独立的全窗口,方便来回 ...

  10. Win7电脑开机无法正常启动只能进入安全模式解决方式

    我们先尝试在开机的时候按F8进入安全模式,进入到安全模式后一次打开“控制面板”-“程序与功能”,然后将卡巴斯基卸载[ http://jingyan.baidu.com/article/ff42efa9 ...