【JAVA零基础入门系列】Day10 Java中的数组
【JAVA零基础入门系列】(已完结)导航目录
- Day1 开发环境搭建
- Day2 Java集成开发环境IDEA
- Day3 Java基本数据类型
- Day4 变量与常量
- Day5 Java中的运算符
- Day6 Java字符串
- Day7 Java输入与输出
- Day8 Java的控制流程
- Day9 Java中的那个大数值
- Day10 Java中的数组
- Day11 Java中的类和对象
- Day12 Java类的简单应用
- Day13 Java类的继承与多态
- Day14 Java对象的克隆
- Day15 对象的比较
什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去。
那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做成绩统计,如求总分,平均分,方差等的时候,遍历成绩信息又成了一大难题,这个时候,你就需要用到数组了。
数组可以很好的解决这两个问题,数组名只有一个,只需要使用数组名加下标来访问各个元素的信息即可,遍历的时候,由于下标是连续的,所以访问起来十分方便。
接下来,就开始正式介绍一下数组吧。
数组是用于存储相同数据类型的集合,使用数组前需要先声明数组,声明方式为:int[] a; 这里只声明了变量,并没有真正初始化为数组。应该使用new运算符创建数组,int[] a = new int[100]; 这里声明了一个大小为100的整数型数组,也就是说,里面可以存放最多一百个整数。需要注意的是,数组的下标是从0-99,而不是1-100,所以,数组里的最后一个数是a[99]而不是a[100],数组定义好之后,就可以用循环结构来进行赋值操作。
int[] a = new int[100];
for(int i = 0; i < 100; i++)
a[i] = i;
新建的数字数组,里面元素都会被初始化为0,如果是逻辑型数组,则都会初始化为假,对象型数组则初始化为null,当你创建一个字符串数组的时候,里面元素都是null而不是空字符串,所以如果希望初始化后为空串,则需要像上述操作那样,遍历每个元素来赋值空串。
对于Java中的数组遍历,还有一种更简便的方法,类似于C#中的for each循环,Java也有同样的for each操作。
for(int element:a)
System.out.println(element);
这段代码会依次打印a中的元素,每个元素占一行,这里的每次循环,都会将数组a中的一个元素暂存在element中,处理完之后在将下一个元素存放在element中。这样做的好处是,省略了下标处理,这样就不存在下标越界的问题了,看起来也更加简洁。当然,如果在循环中需要利用下标进行一些判断或者处理,就只能需要使用普通的for循环来处理了。两种方法各有优点,具体情况具体分析即可。
对于数组的初始化,有几种比较常见的方式。
int[] a={1,2,3,4,5};//这里不需要使用new
new int[]{2,3,4,5,6};//匿名数组
a = new int[]{2,3,4,5,6};
如果你有学过C或者C++的话,这里的int[] a= new int[100]; 相当于C++中的int* a = new int[100];也就是说,数组变量是一个指针,所以将一个数组变量拷贝给两一个数组变量时,它们将指向同一个数组。举个栗子:
int[] a;
int[] b = {3,4,5,6};
a = b;
a[2] = 10;
System.out.println(b[2]);
这里将输出10,也就是说b指向的数组的元素被改变了。如果只想把一个数组里的元素的值拷贝到另一个数组中去的话,就要使用Arrays类的copyOf方法,这个方法有两个参数,第一个是需要拷贝的数组,第二个是需要拷贝的长度。来看一个栗子:
package pers.frank.test;
import java.util.Arrays; public class Test{
public static void main(String[] args) {
int[] a;
int[] b = {3,4,5,6};
a = Arrays.copyOf(b,8);
a[2] = 10;
System.out.println("==B==");
for(int i:b)
System.out.println(i);
System.out.println("==A==");
for(int i:a)
System.out.println(i);
}
}
这样,会循环输出数组b和数组a的各个元素。

这里我们将第二个参数设置成了8,而数组b的长度只有4,那结果会怎样呢?答案显而易见,会把多的长度用0填充。
在前面的栗子里,我们经常看到Java应用程序里带有String[] args的main方法,这个参数表名,main方法接收一个字符串数组,也就是命令行参数。举个栗子:
public class Test{
public static void main(String[] args) {
if(args[0].equals("-h"))
System.out.print("Hello,");
else if (args[0].equals("-g"))
System.out.print("Goodbye,");
for(int i = 1; i < args.length; i++)
System.out.print(" "+ args[i]);
System.out.print("!");
}
}
运行结果如下:

下面再讲讲数组排序,Arrays类中有一个sort方法,用于给数组的元素进行排序,使用的是快速排序算法,算是效率比较高的算法了。这里举个栗子进行演示。
import java.util.Arrays;
public class Test{
public static void main(String[] args) {
int[] numbers = new int[10];
for(int i=0;i<10;i++){
numbers[i] = (int)(Math.random()*10);
}
System.out.println("Before Sort:");
for (int j:numbers){
System.out.println(j);
}
Arrays.sort(numbers);
System.out.println("After Sort:");
for (int j:numbers){
System.out.println(j);
}
}
}

最后再说说多维数组吧,之前的数组只能算是一维数组,二维数组就像Excel的表格那样,有着行跟列,如果有了解过矩阵的话,那对于二维数组应该就不陌生了,在Java中声明二维数组也很简单: int[][] number; 只比一维数组多了一对[]。同样也需要用new来定义数组大小。当然也可以使用类似于一维数组的初始化方法。
int[][] numbers = {
{1,2,3},
{4,5,6},
{7,8,9}
}
数组元素的访问同样需要使用两个方括号,如numbers[1][2],这里的值是数字6,第一个方括号里代表行号,第二个方括号里代表列号,所以这里就是第二行,第三列的数。如果需要遍历二维数组的话,就需要使用两个for循环了,
for(int i=0;i<numbers.length;i++){
for(int j=0;j<numbers[i].length;j++){
System.out.println(numbers[i][j]);
}
}
至于更高维度的数组,一般不会用到,这里就不多介绍了。
至此本篇讲解完毕,欢迎大家继续关注!
【JAVA零基础入门系列】Day10 Java中的数组的更多相关文章
- 【JAVA零基础入门系列】Day5 Java中的运算符
运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...
- 【JAVA零基础入门系列】Day9 Java中的那个大数值
什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...
- 【JAVA零基础入门系列】Day4 变量与常量
这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...
- 【JAVA零基础入门系列】Day6 Java字符串
字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...
- 【JAVA零基础入门系列】Day8 Java的控制流程
什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...
- 【JAVA零基础入门系列】Day12 Java类的简单应用
俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...
- 【JAVA零基础入门系列】Day13 Java类的继承与多态
继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...
随机推荐
- Java第十三周总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- 201521123110 《Java程序设计》第9周学习总结
1. 本周学习总结 2. 书面作业 1.常用异常 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 原来编写代码经常会出现数组访问 ...
- 201521123009 《Java程序设计》第1周学习总结
1. 本周学习总结 对Java进行了了解与简单的学习.第一次接触Java觉得比较难理解. 希望之后的深入学习可以解决目前的一些问题. 2. 书面作业 为什么java程序可以跨平台运行?执行java程序 ...
- Java Classloader机制解析(转)
做Java开发,对于ClassLoader的机制是必须要熟悉的基础知识,本文针对Java ClassLoader的机制做一个简要的总结.因为不同的JVM的实现不同,本文所描述的内容均只限于Hotspo ...
- Hibernate的Configuration对象的configure()方法
Configuration configuration=new Configuration(); configuration.configure(); 在Hibernate底层实现configure( ...
- 深入理解计算机系统(2.5)------C语言中的有符号数和无符号数以及扩展和截断数字
上一篇博客我们讲解了计算机中整数的表示,包括无符号编码和补码编码,以及它们之间的互相转换,个人觉得那是非常重要的知识要点.这篇博客我们将介绍C语言中的有符号数和无符号数以及扩展和截断数字. 1.C语言 ...
- JavaScript中的ASCII碼轉換成字符的兩種方法
方法一:轉義字符 \xxx:用十六進制的ASCII碼值轉換成字符. 方法二:String方法 String.fromCharCode(value): //用十進制的ASCII碼值轉換成字符. 舉例:結 ...
- postman安装使用教程---图文讲解
一.安装postman 1,安装包安装 官网下载地址:https://www.getpostman.com 选择好对应的版本下载,下载完后直接安装 2,插件包安装 可以在谷歌的应用商店里面找到,或者在 ...
- OC——继承
继承的其中一个很重要的目的是为了实现多态.我们现在先来看看OC的继承. 一.继承 父类: 头文件 // // Peason.h // 01-继承和多态 // // Created by zhangji ...
- SQLServer总结
基础 nvarchar 和 varchar等的区别 1.nvarchar多了一个N,n表示使用的unicode编码,不用N开头的是用的utf-8编码. 2.所以中文在varchar中占两个字符长度,在 ...