在学习数组之前先学习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. hdu 3306 Another kind of Fibonacci 矩阵快速幂

    参考了某大佬的 我们可以根据(s[n-2], a[n-1]^2, a[n-1]*a[n-2], a[n-2]^2) * A = (s[n-1], a[n]^2, a[n]*a[n-1], a[n-1] ...

  2. CRM系统对管理客户的帮助

    我们可以把客户关系看做是一种长期的投资,在资源有限的基础上,把人力财力物力放到那些能够持续创造价值的客户身上,从而为企业带来源源不断的收益.通过进行客户关系管理,能够让企业与客户之间建立沟通的渠道,形 ...

  3. Web 前端开发规范手册

    一.规范目的 Web 前端开发规范手册 1.1 概述 ......................................................................... ...

  4. CentOS7-磁盘扩容(LVM-非空目录拓展卷空间大小)

    查看存储情况 $ df -kh 查看磁盘情况 $ fdisk -l 创建分区(注:可操作存储上限2TB) $ fdisk /dev/sdb 根据提示,依次输入"n","p ...

  5. SpringMVC(3)URL请求到Action的映射规则

    在SpringMVC(2)经典的HelloWorld实现我们展示了一个简单的get请求,并返回了一个简单的helloworld页面.本篇我们来学习如何来配置一个action的url映射规则. 在Spr ...

  6. webView远程代码执行漏洞复现

    一.概述 这个漏洞只存在于Android API level 16以及之前的版本,系统没有限制使用webView.addJavascriptInterface方法,导致攻击者可以通过使用java 反射 ...

  7. XSS challenges 1-10

    学长发的xss靶场,刚好js学完了,上手整活. 这个提示说非常简单,直接插入就完事了 <script>alert(document.domain)</script> 第二关. ...

  8. 一、从GitHub浏览Prism示例代码的方式入门WPF下的Prism

    最近这段时间一直在看一个开源软件PowerToys的源码,里面使用Modules的开发风格让我特别着迷,感觉比我现在写代码的风格好了太多太多.我尝试把PowerToys的架构分离了出来,但是发现代码维 ...

  9. linux驱动之获取设备树信息

    上一篇文章学习了字符设备的注册,操作过的小伙伴都知道上一篇文章中测试驱动时是通过手动创建设备节点的,现在开始学习怎么自动挂载设备节点和设备树信息的获取,这篇文章中的源码将会是我以后编写字符驱动的模板. ...

  10. Java | 日期类型的绍介和操作

    Date类 Date类在java.util.Date,Date类表示特定的瞬间,精确到毫秒.(毫秒是千分之一秒)毫秒可以对时间和日期进行计算,可以把日期转换为毫秒进行计算,计算完毕,再把毫秒转换为日期 ...