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:在收 ...
随机推荐
- 金蝶K3 V12.2版本,中途启用双计量单位出现错误
忘记修改虚仓库存/收料通知单的双计量数量
- webstorm和git安装后,terminal输入git命令,提示'git' 不是内部或外部命令
最近换了工作,拿到电脑重新搭建编程环境,踩了好多git和sourcetree的坑,就是一直拉不下来代码,晕·~~经过几天的爬坑,终于可以拉取推送代码了!!! 问题:webstorm和git都安装完成, ...
- 网站性能优化的方法--Yahoo
如何能让用户更快的打开我们的网页? 1.尽可能减少HTTP请求数 2.使用CDN(内容分发网络) 3.添加Expire/Cache-Control头 4.启用Gzip压缩 5.将CSS放在页面最上面 ...
- springboot+kafka+邮件发送(最佳实践)
导读 集成spring-kafka,生产者生产邮件message,消费者负责发送 引入线程池,多线程发送消息 多邮件服务器配置 定时任务生产消息:计划邮件发送 实现过程 导入依赖 <proper ...
- 基于zookeeper集群的云平台-配置中心的功能设计
最近准备找工作面试,就研究了下基于zookeeper集群的配置中心. 下面是自己设想的关于开源的基于zookeeper集群的云平台-配置中心的功能设计.大家觉得哪里有问题,请提出宝贵的意见和建议,谢谢 ...
- win10去除快捷方式小箭头
切忌删除注册表项: HKEY_CLASSES_ROOT -> lnkfile -> IsShortcut 这个方法以前是可以的,但是在2018年之后更新的系统就会出现任务栏图标打不开的情况 ...
- 浅谈Ceph纠删码
目 录第1章 引言 1.1 文档说明 1.2 参考文档 第2章 纠删码概念和原理 2.1 概念 2.2 原理 第3章 CEPH纠删码介绍 3.1 CEPH纠删码用途 3.2 CEPH纠删码库 3.3 ...
- 【转载】C# 中的委托和事件(详解)
<div class="postbody"> <div id="cnblogs_post_body" class="blogpost ...
- hadoop学习(五)----HDFS的java操作
前面我们基本学习了HDFS的原理,hadoop环境的搭建,下面开始正式的实践,语言以java为主.这一节来看一下HDFS的java操作. 1 环境准备 上一篇说了windows下搭建hadoop环境, ...
- C#读取Txt大数据并更新到数据库
环境 Sqlserver 2016 .net 4.5.2 目前测试数据1300万 大约3-4分钟.(限制一次读取条数 和 线程数是 要节省服务器资源,如果调太大服务器其它应用可能就跑不了了), Sql ...