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 + '}'; } }