public class personStatic { /* 2. personStatic 的类加载过程中,执行静态代码块 */ static{ System.out.println("这是静态代码块执行"); } public personStatic() { System.out.println("这是构造方法"); } static class student { public student() { System.out.println("这是学生方法"); personStatic personStatic = new personStatic(); } } /* 1.启动main方法触发PersonStatic类的类加载 */ public static void main(String[] args) { /* 3. 类加载结束后,启动main方法 */ System.out.println("这是main方法"); /* 4. 创建student类 非静态上下文 无法访问 静态上下文 */ student s = new student(); } } 为什么没有输出 这是学生方法? 不是因为非静态上下文 无法访问 静态上下文 吗? 也没有输出 这是构造方法 啊 如果要输出,请修改一下代码内容:要输出"这是学生方法"和"这是构造方法",需要对代码进行如下修改: public class personStatic { /* 2. personStatic 的类加载过程中,执行静态代码块 */ static{ System.out.println("这是静态代码块执行"); } public personStatic() { System.out.println("这是构造方法"); } static class student { public student() { System.out.println("这是学生方法"); personStatic personStatic = new personStatic(); } } /* 1.启动main方法触发PersonStatic类的类加载 */ public static void main(String[] args) { /* 3. 类加载结束后,启动main方法 */ System.out.println("这是main方法"); /* 4. 创建student类 非静态上下文 无法访问 静态上下文 */ student s = new student(); } } 在构造方法中,将方法名从"personStatic"改为"personStatic()",这样才能使其成为构造方法。另外,需要在构造方法中实例化personStatic对象,才能输出"这是构造方法"。

Java 静态类和非静态上下文访问问题:解决方法及代码示例

原文地址: https://www.cveoy.top/t/topic/qkpS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录