package cn.test;
/**
* @author: zhao
* @createDate: 2020/10/14
* @description: 这个类用于测试数组的创建方式。
*/
public class InitArray {
public static void main(String[] args) {
/**
* 数组是一个容器,它可以同时存储多个数据值,但是这些数据值都是相同类型的,他们可以是基本数据类型,也可以是引用数据类型。
* 注意: 数组的长度在运行期间不可变
* 数组共有两种初始化方法:
* 动态初始化:
* 他的特点是在初始化的同时直接指定长度,示例如下:
* 类型[] array = new 类型[length]
* 静态初始化:
* 他的特点是在初始化的同时指定数组的内容,实际上数组会根据指定的内容来指定数组的长度,所以都会有指定长度的步骤。
* 类型[] array = new 类型[] {内容}
* 他的省略格式如下:
* 类型[] array = {内容}
*/
// 动态创建基本数据类型数组:
int[] array1 = new int[5];
// 如果后面不进行赋值的化,数组会存放int对应的默认值0, 可以打印输出查看
for (int i : array1) {
System.out.print(i + " ");
}
/**
* 输出:
* 0 0 0 0 0
*/
/** 对array1进行赋值 */
for (int i = 0; i < array1.length; i++) {
array1[i] = i + 5;
}
// 打印查看
for (int i : array1) {
System.out.print(i + " ");
}
// 5 6 7 8 9
System.out.println();
// 静态初始化基本数据类型
byte[] array2 = new byte[] {97, 98, 99};
// 也可以使用省略格式
char[] array3 = {'a', 'b', 'c'};
for (byte b : array2) {
System.out.print(b + " ");
}
/**
* 输出:
* 97 98 99
*/
System.out.println();
for (char c : array3) {
System.out.print(c + " ");
}
/**
* 输出:
* a b c
*/
System.out.println();
// 引用数据类型的数组创建
// 已定义好了一个Person类, 创建Person类的数组
Person[] person = new Person[]{new Person(), // 空参创建
new Person("李白", 22),
new Person("韩信", 23)
};
/**输出
* Person{name='null', age=0}
* Person{name='李白', age=22}
* Person{name='韩信', age=23}
*/
for (Person per : person) {
System.out.println(per);
}
/**
* 注意事项: 如果创建时候不指定具体数据值,会默认赋值该类型的默认值,默认值分别是:
* int 0
* float 0.0
* double 0.0
* char '\u0000'(不可见)
* 引用类型(如类,String) null
* boolean false
*/
double[] a = new double[1];
byte[] b = new byte[1];
char[] c = new char[1];
String[] d = new String[1];
Person[] e = new Person[1];
System.out.println("double 类型的a的默认值为:" + a[0]); // double 类型的a的默认值为:0.0
System.out.println("byte 类型的b的默认值为:" + b[0]); //byte 类型的b的默认值为:0
System.out.println("char 类型的c的默认值为:" + c[0]); //char 类型的c的默认值为: !未显示:因为不可见
System.out.println("String 类型的d的默认值为:" + d[0]); //String 类型的d的默认值为:null
System.out.println("Person(类) 类型的的默认值为:" + e[0]); // Person(类) 类型的的默认值为:null
}
}
package cn.test;
import java.lang.ref.SoftReference;
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}