在学习数组之前先学习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. AcWing 243. 一个简单的整数问题2

    给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1."C l r d",表示把 A[l],A[l+1],-,A[r] 都加上 d. 2."Q l r ...

  2. Redisson 分布式锁源码 09:RedLock 红锁的故事

    前言 RedLock 红锁,是分布式锁中必须要了解的一个概念. 所以本文会先介绍什么是 RedLock,当大家对 RedLock 有一个基本的了解.然后再看 Redisson 中是如何实现 RedLo ...

  3. hugegraph 源码解读 —— 索引与查询优化分析

    为什么要有索引 gremlin 其实是一个逐级过滤的运行机制,比如下面的一个简单的gremlin查询语句: g.V().hasLabel("label").has("pr ...

  4. 资源:Navicat15最新版本破解 亲测可用(2020-11-14)

    1.下载Navicat Premium 官网https://www.navicat.com.cn/下载最新版本下载安装 2.网盘下载破解 本人网盘链接:https://pan.baidu.com/s/ ...

  5. 解决MyEclipse一直在Updating indexes的文题

    Updating indexes是Maven在下载更新,这个需要手动去设置即可:  Window --> Preferences --> Maven4MyEclipse --> 去除 ...

  6. 常见web安全隐患及解决方案(转)

      Abstract 有关于WEB服务以及web应用的一些安全隐患总结资料. 1. 常见web安全隐患 1.1.       完全信赖用户提交内容 开发人员决不能相信一个来自外部的数据.不管它来自用户 ...

  7. Spring Ioc和依赖注入

    总结一下近来几天的学习,做个笔记 以下是Spring IoC相关内容: IoC(Inversion of Control):控制反转: 其主要功能可简单概述为:将 用 new 去创建实例对象,转换为让 ...

  8. Windows 上连接蓝牙耳机

    "开始"菜单 –> 输入蓝牙 点击蓝牙设备,选择连接设备即可.

  9. Linux 内核睡眠的几种方式

    译至:http://geeki.wordpress.com/2010/10/30/ways-of-sleeping-in-linux-kernel/ 在Linux中睡眠有2-3种不同的方法. 睡眠的第 ...

  10. [Kong] basic-auth基本认证及ACL鉴权

    目录 basic-auth 1. Route上启用插件 2. 创建一个Consumer 3. 为Consumer创建凭证 4. 验证凭证 ACL 用户鉴权 1. 在route上启用ACL鉴权插件 2. ...