标签:count Count 01 02 初始值 默认值 加载
/**
* @author yanwu12138
* @date 2020-06-03 20:25:33.
* <p>
* describe:
* 类加载时静态你成员变量的赋值过程:
* * 一:loadClass(类加载)
* * 1. 将class对象加载到内存中
* * 2. 给class对象的静态成员变量赋默认值
* * 3. 给class对象的静态成员变量赋初始值
* * 二:newObject(创建对象)
* * 1. 给Object对象申请内存空间
* * 2. 将Object对象加载到内存
* * 3. 给Object对象的静态成员变量赋默认值
* * 4. 给Object对象的静态成员变量赋初始值
*/
public class D03ClassLoaderProcedure {
public static void main(String[] args) {
// ----- 结果为:3
System.out.println("count01 -- " + Count_01.count);
// ----- 结果为:2
System.out.println("count02 -- " + Count_02.count);
}
/**
* 1. 将 Count_01 对象加载到内存
* 2. 给 count 属性赋默认值:0
* 3. 给 count_01 属性赋默认值:null
* 4. 给 count 属性赋初始值:2
* 5. 给 count_01 属性对象赋初始值:new Count_01()
* 注意:此时的 count 值为:2,在第 5 步给 count_01 属性赋初始值时会调用 Count_01 的构造方法
* 所以:count 会 ++,最终 count 值为:3
*/
private static class Count_01 {
public static int count = 2;
public static Count_01 count_01 = new Count_01();
private Count_01() {
count++;
}
}
/**
* 1. 将 Count_02 对象加载到内存
* 2. 给 count_02 属性赋默认值:null
* 3. 给 count 属性赋默认值:0
* 4. 给 count_02 属性赋初始值:new Count_02()
* 5. 给 count 属性赋默认值:2
* 注意:在第 4 步给 count_02 属性赋初始值时会调用 Count_02 的构造方法,此时的 count 还没有赋初始值,只有默认值,所以此时 count为:0,count++为:1
* 在第 5 步给count 属性赋默认值时会用 2 覆盖 count++:1 的值,所以 count 最终值为:2
*/
private static class Count_02 {
public static Count_02 count_02 = new Count_02();
public static int count = 2;
private Count_02() {
count++;
}
}
}
标签:count,Count,01,02,初始值,默认值,加载 来源: https://www.cnblogs.com/yanwu0527/p/13040626.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。