这一章节我们来全面了解一下数组。

1.数组在初始化之前。我们不能使用他的引用来做不论什么事情。

package com.ray.ch14;

public class Test {
public static void main(String[] args) {
int[] a;
// System.out.println(a);//error,The local variable a may not have been
// initialized
// a[0]=0;//error,The local variable a may not have been initialized
}
}

上面的错误信息已经说明了观点。

2.数组在初始化的时候,假设是基础类型里面的数值型类型,那么初始化每一个元素为0,假设是char。则是‘空’,假设是boolean。则是false,假设是其它类型(包含不是数值型类型的基础类型)。则初始化每一个元素为null

package com.ray.ch14;

import java.util.Arrays;

public class Test {
public static void main(String[] args) {
int[] a = new int[3];
String[] b = new String[3];
char[] c = new char[3];
boolean[] d = new boolean[3];
MyClass[] myClasses = new MyClass[3];
System.out.println(Arrays.toString(a));
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(c));
System.out.println(Arrays.toString(d));
System.out.println(Arrays.toString(myClasses));
}
} class MyClass {
}

输出:

[0, 0, 0]
[null, null, null]
[ , ,]

[false, false, false]
[null, null, null]

3.创建数组的两种方式。显式new与隐式new

package com.ray.ch14;

public class Test {
public static void main(String[] args) {
MyClass[] a = new MyClass[3];
MyClass[] b = { new MyClass(), new MyClass(), new MyClass() };
}
} class MyClass {
}

上面两种创建方式是对等的。

4.上面的隐式new事实上就是聚集初始化。可是。他本身有一定的局限性,就是必须在当前位置初始化。我们以下再看看还有一种动态聚集初始化

package com.ray.ch14;

public class Test {
public static void main(String[] args) {
MyClass[] a = new MyClass[] { new MyClass(), new MyClass(),
new MyClass() };
MyClass[] b = { new MyClass(), new MyClass(), new MyClass() };
}
} class MyClass {
}

观察上面的代码。数组a更加的灵活。

5.数组标识符是一个引用。指向堆里面的对象。

package com.ray.ch14;

public class Test {
public static void main(String[] args) {
int[] ints = new int[] { 1, 2, 3 };
System.out.println(ints);
}
}

输出:

[I@1bab50a

上面的输出事实上就是一个内存地址。

6.基础类型数组存储的是基础类型的值。对象数组存储的是对象的引用(内存地址)

package com.ray.ch14;

public class Test {
public static void main(String[] args) {
int[] ints = new int[] { 1, 2, 3 };
for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i]);
}
MyClass[] myClasses = new MyClass[] { new MyClass(), new MyClass(),
new MyClass() };
for (int i = 0; i < myClasses.length; i++) {
System.out.println(myClasses[i]);
}
}
} class MyClass {
}

输出:

1
2
3
com.ray.ch14.MyClass@c3c749
com.ray.ch14.MyClass@150bd4d
com.ray.ch14.MyClass@1bc4459

总结:上面总结了数组的多个方面。以及各个方面都做出来举例。

这一章节就到这里。谢谢。

-----------------------------------

文件夹

从头认识java-14.2 进一步了解数组的更多相关文章

  1. Java 14带来了许多新功能

    本文是作者翻译自java magazine的文章,我也将回持续的关注java的最新消息,即时和大家分享.如有翻译不准确的地方,欢迎大家留言,我将第一时间修改.   Java 14包含比前两个发行版更多 ...

  2. Java IO: 字节和字符数组

    原文链接  作者: Jakob Jenkov   译者:homesick 内容列表 从InputStream或者Reader中读入数组 从OutputStream或者Writer中写数组 在java中 ...

  3. Java 8 到 Java 14,改变了哪些你写代码的方式?

    前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...

  4. Java基础语法Day_05(数组的概念)

    第14节 数组         day05_01_数组的概念 day05_02_数组的定义格式一_动态初始化 day05_03_数组的定义格式二_静态初始化 day05_04_数组的定义格式三_省略的 ...

  5. Java将文件转为字节数组

    Java将文件转为字节数组 关键字:文件,文件流,字节流,字节数组,二进制 摘要:最近工作中碰到的需求是,利用http传输二进制数据到服务器对应接口,需要传输userId, file(加密后)等一系列 ...

  6. Java数据结构和算法之数组与简单排序

    一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信 ...

  7. [改善Java代码]避开基本类型数组转换列表陷阱

    开发中经常用到Arrays和Collections这两个工具类. 在数组和列表之间进行切换.非常方便.但是也会遇到一些问题. 看代码: import java.util.Arrays; import ...

  8. Java中的二维数组

    Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空 ...

  9. java学习之二维数组

    java当中的二维数组,存储一组比较特殊的对象.他存储一个数组,同时存储的数组当中又存储着元素. java二维数组的声明方式一: class Arr2Demo { public static void ...

  10. Java 反射 Array动态创建数组

    Java 反射 Array动态创建数组 @author ixenos 注:java.lang.reflect.Array 是个反射工具包,全是静态方法,创建数组以多维数组为基准,一维数组只是特殊实现 ...

随机推荐

  1. 课堂笔记II

  2. 在控制器“xxxx”上找不到与该请求匹配的操作

    Message:"找不到与请求 URI"http://localhost:8091/Api/CommonApi/SelectBind/GetBudCategoryListByCID ...

  3. Testlink集成Jira时如果出现Error咋办?

    TestLink在用SOAP集成Jira时,如果出现: SOAP Fault: (code: WSDL, string: SOAP-ERROR: Parsing WSDL: Couldn't load ...

  4. C++ Contest Code preprocessor

    大概可以拿来方便拉模板 变量名.语法都是瞎整的你感觉有用随便用好了.. #include<bits/stdc++.h> using namespace std; map<string ...

  5. BZOJ2916 [Poi1997]Monochromatic Triangles 数论

    答案等于总三角形数-不合法数 一个不合法三角形一定存在两个顶点,在这个三角形中这个顶点的角的两边不同色 #include<cstring> #include<cmath> #i ...

  6. input type file上传文件之后清空内容。

    上次写过如何上传文件,上传成功之后,会出现一些问题. 当我打开上传的文件,但是没有点击上传,然后关闭弹窗,接着继续上传刚才的那个文件.为了满足产品组的要求,我们一般都会把样式进行一定的覆盖. 但这就会 ...

  7. BZOJ 3513: [MUTC2013]idiots

    3513: [MUTC2013]idiots Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 476  Solved: 162[Submit][Stat ...

  8. 【HDOJ5533】Dancing Stars on Me(计算几何)

    题意:给定二维平面上的n个整点,问它们是否都在正n边形的定点上 n<=100,abs(x[i]),abs(y[i])<=1e4 思路:队友做的,抱大腿 可以发现只有n=4时顶点有可能都是整 ...

  9. Java IO 学习(三)缓冲IO / 直接IO / 内存映射

    缓冲IO 在介绍缓冲IO之前需要先了解一下常用的机械硬盘的原理与特点 一个机械硬盘中装有多个盘片 每个盘片上有多个同心圆(磁道) 每个同心圆又由多个弧(扇区)组成,每个弧上都记录了等量的数据(比方说5 ...

  10. POJ 3070 Fibonacci【斐波那契数列/矩阵快速幂】

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17171   Accepted: 11999 Descr ...