数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。

组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。

数组是在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来的一种形式。这些按序排列的同类数据元素的集合称为数组。

1初始化数组

动态初始化

Java | 复制
1
2
3
4
5
6
7
8
int[] array = new int[3];
// 两种方式都可以
// int array[] = new int[3];
array[0] = 1;
array[1] = 2;
array[2] = 3;
 
System.out.println(array[0]);

静态初始化

Java | 复制
1
2
3
4
5
int[] array = { 1234 };
int[] array1 = new int[] { 1234 };
 
System.out.println(array[2]);
System.out.println(array1[2]);

默认初始化

Java | 复制
1
2
int[] array = new int[4];
System.out.println(array[2]);

2获取数组的长度

Java | 复制
1
2
3
int[] array = new int[10];
int length = array.length;
System.out.println("数组array的长度是:" + length);

3二维数组

二维数组初始化

同一维数组一样,共有4总不同形式的定义方法:

Java | 复制
1
2
3
4
int[][] array1 = new int[10][10];
int array2[][] = new int[10][10];
int array3[][] = { { 111 }, { 222 } };
int array4[][] = new int[][] { { 111 }, { 222 } };

不定长二维数组

Java | 复制
1
2
3
4
int[][] array = new int[3][];
array[0] = new int[1];
array[1] = new int[2];
array[2] = new int[3];

获取二维数组的长度

Java | 复制
1
2
3
4
5
6
int length1 = array.length;
int length2 = array[0].length;
// 获取二维数组的第一维长度(3)
System.out.println(length1);
// 获取二维数组的第一维的第一个数组长度(1)
System.out.println(length2);

4数组遍历

传统方式遍历

Java | 复制
1
2
3
4
int[] array = new int[] { 123 };
for (int i = 0; i < array.length; i++) {
    System.out.println("array[" + i + "] = " + array[i]);
}

增强for循环方式遍历

Java | 复制
1
2
3
4
int[] array = new int[] { 123 };
for (int i : array) {
    System.out.println(i);
}

5数组排序

Java | 复制
1
2
3
int[] array = { 32145 };
Arrays.sort(array);
System.out.println(Arrays.toString(array));

另:常用的排序方法有冒泡排序、快速排序、选择排序、插入排序、希尔(Shell)排序、堆排序。可参考Java 数组排序

6数组的复制、插入和合并

参考:Java 一维数组复制、插入和合并

7实用API

输出数组

Java | 复制
1
2
int[] array = { 123 };
System.out.println(Arrays.toString(array));

数组转List

Java | 复制
1
2
3
String[] array = { "a""b""c""d""e" };
List<String> list = new ArrayList<String>(Arrays.asList(array));
System.out.println(list);

数组转Set

Java | 复制
1
2
3
String[] array = { "a""b""c""d""e" };
Set<String> set = new HashSet<String>(Arrays.asList(array));
System.out.println(set);

List转数组

Java | 复制
1
2
3
4
5
6
7
8
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
String[] array = new String[list.size()];
list.toArray(array);
for (String s : array)
    System.out.println(s);

数组中是否包含某个值

Java | 复制
1
2
3
String[] array = { "a""b""c""d""e" };
boolean b = Arrays.asList(array).contains("a");
System.out.println(b);

数组合并

Java | 复制
1
2
3
4
int[] array1 = { 12345 };
int[] array2 = { 678910 };
int[] array = org.apache.commons.lang.ArrayUtils.addAll(array1, array2);
System.out.println(Arrays.toString(array));

String数组转字符串(使用指定字符拼接)

Java | 复制
1
2
3
String[] array = { "a""b""c" };
String str = org.apache.commons.lang.StringUtils.join(array, ", ");
System.out.println(str);

数组逆序

Java | 复制
1
2
3
int[] array = { 12345 };
org.apache.commons.lang.ArrayUtils.reverse(array);
System.out.println(Arrays.toString(array));

数组元素移除

Java | 复制
1
2
3
int[] array = { 12345 };
int[] removed = org.apache.commons.lang.ArrayUtils.removeElement(array, 3);
System.out.println(Arrays.toString(removed));

8数组异常

1. 数组下标越界异常,java.lang.ArrayIndexOutOfBoundsException

在java中,数组下标从0开始,我们定义了一个长度为3的数组,想要从中取出第四位,便会抛出此异常。

Java | 复制
1
2
int[] array = new int[] { 123 };
System.out.println(array[3]);

 

Java 数组详解 - 用法、遍历、排序、实用API的更多相关文章

  1. 【Java学习笔记之五】java数组详解

    数组 概念 同一种类型数据的集合.其实数组就是一个容器. 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素. 格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度] ...

  2. Java - 数组详解(图解数组的基本操作)

    目录 什么是数组 数组的定义和内存分配 数组的赋值和访问 数组的注意事项 数组的内存图解 数组的插入 数组的删除 数组的扩容 数组的反转 首先 什么是数组 数组是一组地址连续.长度固定的具有相同类型的 ...

  3. Java map 详解 - 用法、遍历、排序、常用API等

    尊重原创: http://www.cnblogs.com/lzq198754/p/5780165.html 概要: java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 L ...

  4. java 数组详解

    from : http://blog.csdn.net/jionjionyoushen/article/details/6223006 1.关于数组的特点 1)在Java中,无论使用数组或集合,都有边 ...

  5. JAVA数组详解

    package com.keke.demo; import java.text.ParseException;import java.text.SimpleDateFormat;import java ...

  6. Java基础之 数组详解

    前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...

  7. “全栈2019”Java第三十一章:二维数组和多维数组详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. “全栈2019”Java第三十章:数组详解(下篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. “全栈2019”Java第二十九章:数组详解(中篇)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. Delphi 全局画点TCanvas.Pixels[X,Y]

    procedure TForm1.btnChangePixelClick(Sender: TObject); var baseX : integer ; baseY : integer ; i,j : ...

  2. Qcon2017实录|Service Mesh:下一代微服务

    https://zhuanlan.zhihu.com/p/30292372 数人云11月Meetup报名开启,看中西方大神如何论道云原生与微服务!本文作者敖小剑老师将在本次Meetup上继续分享Ser ...

  3. FreeRTOSConfig 配置文件详解

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家讲解 FreeRTOS 的配置文件 FreeRTOSConfig.h 中每个选项的作用.初学的话 ...

  4. STM32 中断应用概览

    本章参考资料< STM32F4xx 中文参考手册>第十章-中断和事件.<ARM Cortex™-M4F 技术参考手册> -4.3 章节: NVIC 和 4.4 章节: SCB— ...

  5. 省市联动js代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 一款基于css3鼠标经过圆形旋转特效

    今天给大家分享一款基于css3鼠标经过圆形旋转特效.当鼠标经过的时候图片边框颜色旋转,图片显示详情.该实例适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗 ...

  7. RP2837 IN1-IN2 对应关系 2路DI

    RP2837 IN1-IN2 对应关系: IN1   ARM-IO2   PA16 IN2   ARM-IO6   PA4 root@sama5d3-linux:~ echo 16  > /sy ...

  8. Webpack实例教程及模块化规范

    Webpack 是当下最热门的前端资源模块化管理和打包工具.它能够将很多松散的模块依照依赖和规则打包成符合生产环境部署的前端资源. 通过 loader 的转换,不论什么形式的资源都能够视作模块,比方 ...

  9. ngx_lua模块学习示例之waf

    转自:http://www.tuicool.com/articles/FbQ3ymB WAF的主要功能为: ip黑白名单 url黑白名单 useragent黑白名单 referer黑白名单 常见web ...

  10. Toad 所有 菜单说明(太多)

    菜单说明 新版本 toad 软件中, 比较有用的菜单 session 菜单    Session Information: 显示当前session的用户的情况, 比如权限, 授权等 Database ...