数组

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基础教程——数组的更多相关文章

  1. Java基础教程:Lambda表达式

    Java基础教程:Lambda表达式 本文部分内容引用自OneAPM:http://blog.oneapm.com/apm-tech/226.html 引入Lambda Java 是一流的面向对象语言 ...

  2. Java基础教程:多线程基础(1)——基础操作

    Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...

  3. Java基础教程:反射基础

    Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...

  4. Java基础教程:面向对象编程[2]

    Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...

  5. Java基础教程:面向对象编程[1]

    Java基础教程:面向对象编程 内容大纲 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台 ...

  6. Java基础教程:HashTable与HashMap比较

    Java基础教程:HashTable与HashMap比较 1.  关于HashMap的一些说法: a)  HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体.HashMap的底层结 ...

  7. Java基础教程:JDBC编程

    Java基础教程:JDBC编程 1.什么是JDBC JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC A ...

  8. Java基础教程:对象比较排序

    Java基础教程:对象比较排序 转载请标明出处:http://blog.csdn.net/wangtaocsdn/article/details/71500500 有时候需要对对象列表或数组进行排序, ...

  9. Java基础教程:面向对象编程[3]

    Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...

随机推荐

  1. 全球最火的程序员学习路线!没有之一!3天就在Github收获了接近1w点赞

    大家好,我是G哥,目前人在荆州办事,但是干货还是要安排上! 国外有一个爆火的开发人员学习路线,目前已经在 Github收获了 131 k+ star,Star 数量在 Github 所有仓库中排名第 ...

  2. Ubuntu下创建apt源

    1. 下载所需安装文件 sudo apt-get install soft name  安装并保存安装文件 或者 sudo apt-get source soft name      只下载安装文件 ...

  3. 创建本地yum源

    1. 环境准备 在准备搭建yum源的服务器上安装createrepo,打开防火墙的80端口或者关闭防火墙. 注:createrepo命令只要不是最小化安装,都是支持的.如果是最小化安装,下载下图下载r ...

  4. JQuery如何实现统计图表

    EEP JQuery如何实现统计图表 讯光科技 前言 在ERP项目开发过程中,统计图表(chart)普遍应用于各种统计和报表中,其形象直观,内容清晰.EEP的JQuery网站项目使用了Easyui 插 ...

  5. 【总结】mysql调优

    一.事务 1.事务的特性 (1)原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行. (2)一致性(Consistency),可以理解为数据是满足完整性约束的,也就是 ...

  6. js-循环遍历

    for循环 (最传统的方法) let arr=[a,b,c,d] for (var i = 0; i < arr.length; i++) { console.log(arr[i]); } fo ...

  7. Django、haystack、whoosh实现全局搜索

    Django.haystack.whoosh实现全局搜索 关注公众号"轻松学编程"了解更多. [参考:https://blog.csdn.net/zhaogeno1/article ...

  8. python创建Django项目

    创建Django项目 关注公众号"轻松学编程"了解更多. 创建一个HelloDjango项目 GitHub地址:https://github.com/liangdongchang/ ...

  9. [Luogu P2051] [AHOI2009]中国象棋 (状压DP->网格DP)

    题面 传送门:https://www.luogu.org/problemnew/show/P2051 Solution 看到这题,我们不妨先看一下数据范围 30pt:n,m<=6 显然搜索,直接 ...

  10. (一)http协议介绍

    HTTP协议详解 (一) 介绍 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本 ...