从头认识java-14.2 进一步了解数组

Posted gccbuaa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从头认识java-14.2 进一步了解数组相关的知识,希望对你有一定的参考价值。

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

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);
	}
}


输出:

[[email protected]

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

 

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
[email protected]
[email protected]
[email protected]

 

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

 

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

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

文件夹

 

以上是关于从头认识java-14.2 进一步了解数组的主要内容,如果未能解决你的问题,请参考以下文章

从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?

从头认识java-15.1 填充容器-利用Collection构造器的方式

从头开始查看寻呼机图像(片段)滑块

从头认识java-目录

从头认识Spring-1.11 注入List或Set(这个例子比较体现代码复用)

教程 | 从头开始了解PyTorch的简单实现