Java 从入门到进阶之路(五)
之前的文章我们介绍了 Java 的循环结构,本章我们来看一下 Java 的数组
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。
数组
- 相同数据类型的元素组成的集合
- 元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素,除最后一个元素外,每一个元素都有唯一的后继元素(一个跟一个)
- 可以通过元素所在的位置的顺序号(下标)做标识来访问每一个元素(下标为0开始,最大到元素个数 -1)
创建数组
public class HelloWorld {
public static void main(String[] args) {
// 第一种:先声明一个数组变量 arr,然后把新创建的数组的引用赋值给变量 arr
int[] arr;
arr = new int[5];
// 第二种:数组变量的声明,和创建数组可以用一条语句完成
int[] arr1 = new int[5];
}
}
贴士:在 IDEA 编辑器下输入fori 然后回车就能生成 for (int i = 0; i < ; i++) { } ,输入 foreach 然后回车就能生成 for (:) { }
在上面的代码中我们声明了数组 arr,但是并没有为其赋值,那么系统将会自动为每个数组元素赋值,默认为 0,我们可以对每个元素赋值,也可以在初始化数组的时候赋值,如下代码:
public class HelloWorld {
public static void main(String[] args) {
// 声明整型数组变量 arr,
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) {
// arr 数组默认值为 0
System.out.println(arr[i]); // 0 0 0 0 0
}
// 声明整型数组变量 arr1,
int[] arr1 = new int[5];
arr1[0] = 0;
arr1[1] = 1;
arr1[2] = 2;
arr1[3] = 3;
arr1[4] = 4;
for (int i = 0; i < arr1.length; i++) {
// 输出 arr1 数组值
System.out.println(arr1[i]); // 0 1 2 3 4
}
// 声明整型数组变量 arr2,arr12 赋值 [0,1,2,3,4]
int[] arr2 = {0, 1, 2, 3, 4};
for (int i = 0; i < arr2.length; i++) {
// 输出 arr2 数组值
System.out.println(arr2[i]); // 0 1 2 3 4
}
}
}
上面的代码我们使用 for 循环输出的数组每一个元素,我们还可以使用 for-each 输出:
public class HelloWorld {
public static void main(String[] args) {
// 声明整型数组变量 arr,
double[] arr = {0.1, 1.2, 2.3, 3, 4};
for(double i : arr){
System.out.println(i); // 0.1 1.2 2.3 3.0 4.0
}
}
}
我们也可以将一个数组中的元素复制到另一个数组中去,如下:
public class HelloWorld {
public static void main(String[] args) {
int[] arr1 = {0, 1, 2, 3, 4};
int[] arr2 = new int[5];
/**
* arr1:源数组
* 1:源数组起始下标
* arr2:目标数组
* 0:目标数组的起始下标
* 4:要复制的元素的个数
* */
System.arraycopy(arr1, 1, arr2, 0, 4);
for (int i = 0; i < arr2.length; i++) {
System.out.println(arr2[i]); // 1 2 3 4 5 0
}
}
}
当然复制是不能超范围的,例如我们定义 arr2 的 length 为 3,即 int[] arr2 = new int[3]; ,那么要复制的个数已经超过了目标数组的长度,程序就会报错。
数组的长度在创建后是不可改变的,但是我么可以对其进行扩容,所谓扩容是指创建一个更大的新数组并将其原有数组的内容复制到其中,可以通过 Arrays.copyOf( ) 方法实现。
public class HelloWorld {
public static void main(String[] args) {
int[] arr1 = {0, 1, 2, 3, 4};
// arr1 源数组 arr1.length+1 扩容数组长度
arr1 = Arrays.copyOf(arr1, arr1.length + 1);
for (int i = 0; i < arr1.length; i++) {
System.out.println(arr1[i]); // 0 1 2 3 4 0
}
}
}
当然我们也可以岁原有数组进行减容,只需要把 扩容数组长度 小于源数组即可,那么源数组末尾多出的元素将会被去掉。
java 为我们提供了一种简便的数组排序的方法, Arrays.sort( )
public class HelloWorld {
public static void main(String[] args) {
int[] arr = {1,4,5,67,23,3};
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 1 3 4 5 23 67
}
}
}
Java 从入门到进阶之路(五)的更多相关文章
- Java 从入门到进阶之路(十五)
在之前的文章我们介绍了一下 Java 中的接口,本章我们来看一下 Java 中类的多态. 在日常生活中,很多意思并不是我们想要的意思,如下: 1.领导:“你这是什么意思?” 小明:“没什么意思,意思意 ...
- Java 从入门到进阶之路(二十五)
在之前的文章我们介绍了一下 Java 中的 集合框架中的Collection 的子接口 List的 增删改查和与数组间相互转换的方法,本章我们来看一下 Java 集合框架中的Collection 的 ...
- Java 从入门到进阶之路(二十)
在之前的文章我们介绍了一下 Java 中的包装类,本章我们来看一下 Java 中的日期操作. 在我们日常编程中,日期使我们非常常用的一个操作,比如读写日期,输出日志等,那接下来我们就看一下 Java ...
- Java 从入门到进阶之路(一)
写在前面:从本片文章开始,将记录自己学习 Java 的点滴路程,目标定的并不是让自己成为一个 Java 高手,而是让自己多掌握一门语言,使自己的知识面更广一些,在学习 Java 的过程中如有不对的地方 ...
- Java 从入门到进阶之路(二)
之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...
- Java 从入门到进阶之路(三)
之前的文章我们介绍了 Java 中的变量和基本数据类型,本章我们来看一下 Java 的运算符和表达式. 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操 ...
- Java 从入门到进阶之路(四)
之前的文章我们介绍了 Java 的运算符和表达式,本章我们来看一下 Java 的循环结构. 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性进行. 循环的 ...
- Java 从入门到进阶之路(六)
之前的文章我们介绍了 Java 的数组,本章我们来看一下 Java 的对象和类. Java 是一种面向对象语言,那什么是对象呢,对象在编程语言中属于一个很宽泛的概念,我们可以认为万事万物都是对象,每个 ...
- Java 从入门到进阶之路(七)
在之前的文章中我们介绍了一下 java 中的对象和类,接下来我们来看一下 Java 中的方法重载. 在显示生活中,我们肯定会遇到这样一个问题,那就是我们再商场买东西的时候在付账时的选择.如下 A:在收 ...
随机推荐
- HDU 多校 第三场 Fansblog
代码千万条,规范第一条 训练赛的时候打表找规律,发现答案是1/(st-pre-1)!,奈何用错了模板,一直TLE到比赛结束,一直以为是卡什么输入输出或者是两个素数相差太大导致复杂度过高,读入优化啥的都 ...
- tomcat 启动是 jdbc警告
the web application [ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregist ...
- cookie池的维护
存储形式: 存储在redis中,“spider_name:username–password":cookie 建立py文件及包含方法: initcookies() 初始化所有账号的cooki ...
- Android:JNI与NDK(三)NDK构建的脚本文件配置
友情提示:欢迎关注本人公众号,那里有更好的阅读体验以及第一时间获取最新文章 本文目录 一.前言 本篇我们介绍Android.mk与CMakeLists.txt构建NDK的配置文件,我们知道目前NDK的 ...
- 一文搞懂 Prometheus 的直方图
原文链接:一文搞懂 Prometheus 的直方图 Prometheus 中提供了四种指标类型(参考:Prometheus 的指标类型),其中直方图(Histogram)和摘要(Summary)是最复 ...
- if IE语句 | 判断浏览器IE版本及添加升级提示
本文引自:http://blog.csdn.net/u013372487/article/details/48521929 实现方法 判断当前浏览器是否IE6(或IE6内核) <!--[if I ...
- golang timeoutHandler解析及kubernetes中的变种
Golang里的http request timeout比较简单,但是稍不留心就容易出现错误,最近在kubernetes生产环境中出现了的一个问题让我有机会好好捋一捋golang中关于timeout中 ...
- ArcGIS数据格式详解
- 爱奇艺JAVA后台面经
链接:https://www.nowcoder.com/discuss/217425 1.volatile关键字的含义 2.Java NIO 讲一下 2.1 NIO selector,epoll的区别 ...
- Unity进阶之ET网络游戏开发框架 06-游客登录
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...