在学习数组之前先学习java.util.Arrays类中的一个静态方法Arrays.toString()

该方法可以将传入的数组格式化为一个字符串,便于我们查看数组内容,例如:

import java.util.Arrays;

public class Dome001_Array {
public static void main(String[] args) {
int[] arr = new int[5]; // 定义一个数组 for (int i = 0; i < 5; i++) { // 为每个元素赋值
arr[i] = i + 2;
} String res = Arrays.toString(arr);
System.out.println(res);
}
}

输出结果为:[2, 3, 4, 5, 6]

数组的定义与初始化

Java中数组索引从0开始。

方法一

定义方法:

数据类型[] 数组名字 = new 数据类型[长度];

例如:

int[] arr1 = new int[10];
String[] arr2 = new String[5];

该种方式定义的数组如果不进行初始化,不同类型数组具有不同的默认值:

import java.util.Arrays;

public class Dome001_Array {
public static void main(String[] args) {
int[] arr1 = new int[5];
System.out.println(Arrays.toString(arr1));
// 输出:[0, 0, 0, 0, 0]
// int数组默认值为0 char[] arr2 = new char[5];
System.out.println(Arrays.toString(arr2));
// 输出:[ , , , , ]
// char默认值为\u0000 double[] arr3 = new double[5];
System.out.println(Arrays.toString(arr3));
// 输出:[0.0, 0.0, 0.0, 0.0, 0.0]
// double默认值为0.0 String[] arr4 = new String[5];
System.out.println(Arrays.toString(arr4));
// 输出:[null, null, null, null, null]
// 引用类型默认值为空(null)
}
}

方法二

数据类型[] 数组名字 = new 数据类型[] {元素1, 元素2 ...};

第二个[]中不能写长度值,{元素1, 元素2 ...}是数组中存放的元素值,类型要跟数据类型[]中的一致。

例如:

import java.util.Arrays;

public class Dome001_Array {
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3};
System.out.println(Arrays.toString(arr));
// 输出:[1, 2, 3]
}
}

方法三

数据类型[] 数组名字 = {元素1, 元素2 ...};

例如:

import java.util.Arrays;

public class Dome001_Array {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr));
// 输出:[1, 2, 3]
}
}

数组的长度属性

每个数组都有长度,而且是【固定】的,通过数组名.length可获得数组的长度。

public class Dome001_Array {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
int len = arr.length;
System.out.println(len); // 3
}
}

数组常见异常

数组越界异常

public class Dome001_Array {
public static void main(String[] args) {
int[] arr = new int[10];
arr[10] = 1;
}
}

产生ArrayIndexOutOfBoundsException数组越界异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
at cn.xxmmqg.Array.Dome001_Array.main(Dome001_Array.java:8)

空指针异常

public class Dome001_Array {
public static void main(String[] args) {
int[] arr = new int[10];
arr = null;
int len = arr.length;
}
}

产生NullPointerException空指针异常:

Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "arr" is null
at cn.xxmmqg.Array.Dome001_Array.main(Dome001_Array.java:9)

『Java』数组的更多相关文章

  1. 『Java』Collection接口 Collections类

    接口Collection public interface Collection<E>定义了所有单列集合中共性的方法,所有的单列集合都可以使用共性方法. Collection的常用子接口有 ...

  2. 『Java』StringBuilder类使用方法

    String类存在的问题 String类的底层是一个被final修饰的byte[],不能改变. 为了解决以上问题,可以使用java.lang.StringBuilder类. StringBuilder ...

  3. 『Java』String类使用方法

    Java中的字符串 java.lang.String类表示字符串类,Java程序中所有字符串文字都可以看作实现该类的实例. 特点: 字符串不可变:字符串的值在创建后不能在发生改变 public cla ...

  4. 『Java』List Set

    观前提醒:本文内容多为入门时的学习笔记,笔记内容有些混乱!!! | | | | | | | | | | | | 泛型只能是引用类型,不能是基本类型. 如果希望集合中存储的是基本类型数据,需要基本类型对 ...

  5. 『Java』成员内部类 匿名内部类

    成员内部类 成员方法类是定义在一个类中的方法外的类,例如: public class Outer{ // 外部类 class Inner { // 内部类 // 内部类成员 } // 外部类成员 } ...

  6. 『Java』接口的使用方法

    以下三个文件存在于同一个包下: 定义接口Dome_Interface.java: package cn.xxmmqg.Interface; // 接口不能直接使用,必须有一个"实现类&quo ...

  7. 『GoLang』数组与切片

    数组 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构):这种类型可以是任意的原始类型例如整型.字符串或者自定义类型. 数组长度必须是一个常量表达式,并且必须是一个非负 ...

  8. 2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周

    2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决 ...

  9. 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算_第三周

    2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址: @王志伟 四则运算第一周博客 @仇夏四则运算第一周博客 ...

随机推荐

  1. 在jsp中显示List中的数据

    <% ArrayList list = (ArrayList)request.getAttribute("class"); for(int i = 0; i < lis ...

  2. buu 相册

    一.拖入jeb,这个神器里面,感觉对jeb使用还是不熟悉,对我逆向产生了一些障碍. 抓住题目给的提示,邮箱,全局直接搜索,mail. 看下它的交叉引用 找到了发邮件的方法, C2的MAILFROME说 ...

  3. TestComplete 最新安装教程

    在安装TestComplete之前阅读许可协议.通过安装TestComplete,您确认您同意许可的条款和条件. 查看"安装注意事项"部分,确保您的计算机满足硬件和软件要求. 安装 ...

  4. java封装继承以及多态(含代码)

    封装 该露的露,该藏的藏 我们常需设计要追求,"高内聚,低耦合".高内聚就是类的内部数据操作细节自己完成.不允许外部干涉:低耦合:仅暴漏少量的方法给外部使用. 封装(数据的隐藏) ...

  5. Vue3 + Cesium + Typescript 集成搭建的快速启动模板(包含示例数据)

    开门见山 项目地址:https://github.com/tanghaojie/vue3-cesium-typescript-start-up-template 好用的话给个star呗,有更新可以第一 ...

  6. QT从入门到入土(一)——Qt5.14.2安装教程和VS2019环境配置

    引言 24岁的某天,承载着周围人的关心,一路南下.天晴心静,听着斑马,不免对未来有些彷徨.但是呢,人生总要走陌生的路,看陌生的风景,所幸可以听着不变的歌,关心自己的人就那么多.就像是对庸常生活的一次越 ...

  7. Apache Flink目录遍历(CVE-2020-17519)

    1.漏洞描述 2021年1月5日,Apache Flink官方发布安全更新,修复了由蚂蚁安全非攻实验室发现提交的2个高危漏洞,漏洞之一就是Apache Flink目录遍历漏洞(CVE-2020-175 ...

  8. TestNG基础001

    一.什么是TestNG TestNG是一个强大的测试框架,NG是指Next Generation ,被视为是Junit的升级版本 二.TestNG适用范围 Java单元测试 接口测试 web自动化测试 ...

  9. C++ MFC应用程序开发实例

    MFC:微软基础类(Microsoft Foundation Classes),同VCL类似,是一种应用程序框架,随微软Visual C++ 开发工具发布.作为Application Framewor ...

  10. [.NET大牛之路 003] .NET 的发展简史

    如果你热爱某产品,你一定想了解它的历史.今天我们简单回顾一下 .NET 平台的发展历史,来看看它在历史上的里程碑,这对我们更好地了解和学习 .NET 有着重要的意义. 微软 .NET 战略初衷 20 ...