Java基础教程——数组
数组
Java数组:用于存储同一种数据类型的多个数据。
Java数组本身是一种数据类型——引用类型。
类(String、Scanner等大写字母开头的类型)也属于引用类型,int、double等基本类型不是引用类型。
数组的定义
// C语言风格
int a[] = { 1, 2, 3 };
// Java风格(面向对象风格,推荐!)
int[] b = { 4, 5, 6 };
静态初始化和动态初始化
也就是“手动赋值”、“系统赋值”:
public class 静态初始化和动态初始化 {
public static void main(String[] args) {
int[] _静态初始化 = new int[] { 1, 2, 3 };
int[] _静态初始化_简化 = { 1, 2, 3 };
char[] _动态初始化 = new char[3];
}
}
动态初始化的场合,系统赋什么值?
| 大分类 | 小分类 | 系统赋值 |
|---|---|---|
| 基本类型 | 整数类型 | 0 |
| 基本类型 | 浮点类型 | 0 .0 |
| 基本类型 | 字符类型 | '\u0000' |
| 基本类型 | 布尔类型 | FALSE |
| 引用类型 | 类、接口、数组 | null |
遍历数组
数组通过“索引(index)”访问,从0开始,最大为“数组长度-1”。
int[] c = new int[5];
// ↓↓↓写入
for (int i = 0; i < c.length; i++) {
c[i] = i * 2;
}
// ↓↓↓输出
for (int i = 0; i < c.length; i++) {
System.out.println(c[i]);
}
Java 5之后,加入了“foreach循环”,代码更简洁。
int[] d = { 1, 2, 3, 4, 5 };
// foreach循环遍历数组:只读
for (int n : d) {
System.out.println(n);
}
该循环体中,对n赋值是可以的,但只是对临时变量赋值,无法改写数组中的实际值。
数组的应用:冒泡排序
核心思想:
一个数和其它数比较(循环)
每个数都要做这种比较(再一层循环)

虎老狮口诀
冒泡排序三步走:循环、
交换、
回一手
(回一手是在内层循环-i,主要是为了减少无畏的比较次数,提高效率,不回也行)
public class BubbleSort {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
int temp;
for (int i = 0; i < arr.length; i++) {
// 注意,内存循环要-1,否则比较时[j+1]会越界
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] < arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int n : arr) {
System.out.println(n);
}
}
}
Arrays类
Arrays类提供了大量的静态方法,实现数组的常见操作。
import java.util.Arrays;
public class TestArrays类 {
public static void main(String[] args) {
int[] arr = { 2, 1, 5, 4, 3 };
// Arrays.sort(数组):升序排列
Arrays.sort(arr);
// *Java 8的并行排序,支持多核CPU,更快
Arrays.parallelSort(arr);
// Arrays.toString(数组):数组转为字符串
String s = Arrays.toString(arr);
System.out.println("排序后:" + s);
}
}
Java基础教程——数组的更多相关文章
- Java基础教程:Lambda表达式
Java基础教程:Lambda表达式 本文部分内容引用自OneAPM:http://blog.oneapm.com/apm-tech/226.html 引入Lambda Java 是一流的面向对象语言 ...
- Java基础教程:多线程基础(1)——基础操作
Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...
- Java基础教程:反射基础
Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...
- Java基础教程:面向对象编程[2]
Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...
- Java基础教程:面向对象编程[1]
Java基础教程:面向对象编程 内容大纲 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台 ...
- Java基础教程:HashTable与HashMap比较
Java基础教程:HashTable与HashMap比较 1. 关于HashMap的一些说法: a) HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体.HashMap的底层结 ...
- Java基础教程:JDBC编程
Java基础教程:JDBC编程 1.什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC A ...
- Java基础教程:对象比较排序
Java基础教程:对象比较排序 转载请标明出处:http://blog.csdn.net/wangtaocsdn/article/details/71500500 有时候需要对对象列表或数组进行排序, ...
- Java基础教程:面向对象编程[3]
Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...
随机推荐
- Redis---01简述目录结构与redis.conf文件
一.Redis目录结构 (当前Redis是在CentOS 7 1708 64位环境下,Redis版本为3.2.5) 进入默认的Redis安装目录/usr/local/bin,可以看见这些下图目录结构 ...
- ResultSet 处理方法
结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ...
- 4G DTU的应用场景介绍
4G DTU因为信号要比传统的gprs网络要好,目前已经被广泛应用于物联网产业链中的M2M行业,以远向4G DTU LTE-520为例,它的应用场景如智能电网.智能交通.智能家居.金融.移动 POS ...
- 微信小程序获取高宽uniapp
代码片段 <template> <view> <view class="text" id="w">补充文字</view ...
- 【Luogu】P2292 [HNOI2004]L语言 题解
前置芝士:\(Trie\)字典树 这道题,说是AC自动机,实际上一个\(Trie+\)队列轻松搞定. 首先,我们对所有单词建一棵\(Trie\). 然后,定义一个空队列\(Q\),初始时把\(-1\) ...
- 【Java】阿里巴巴开发规范手册
Java 开发手册 一. 编程规约 (一) 命名风格 [强制]代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束. 反例: _name, $name, __name [强制]代码中 ...
- CF1303G Sum of Prefix Sums
点分治+李超树 因为题目要求的是树上所有路径,所以用点分治维护 因为在点分治的过程中相当于将树上经过当前$root$的一条路径分成了两段 那么先考虑如何计算两个数组合并后的答案 记数组$a$,$b$, ...
- C# 集合类(四)
C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...
- leetcode117:search-rotated-sorted-array
题目描述 给出一个转动过的有序数组,你事先不知道该数组转动了多少 (例如,0 1 2 4 5 6 7可能变为4 5 6 7 0 1 2). 在数组中搜索给出的目标值,如果能在数组中找到,返回它的索引, ...
- Shell 教程01
Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...