package com.qinzj; /** * * 知识点: * 1、执行顺序 静态代码块》普通代码块》构造函数 * 2、static代码块只执行一次,在类加载——初始化阶段执行 * 3、static代码块只执行一次原因: * static代码块只在类加载时执行,类是用类加载器来读取的,类加载器是带有一个缓存区的, * 它会把读取到的类缓存起来,所以在一次虚拟机运行期间,一个类只会被加载一次,这样的话 * 静态代码块只会运行一次 * 4、public static ObjectB objectB = new ObjectB("123"); * 等同于 * public static ObjectB objectB = null; * static { * objectB = new ObjectB("123"); * } * * * @Author: qinzj * @Date */ public class ObjectA { public static ObjectB objectB = null; public ObjectA() { // objectB = new ObjectB(); System.out.println("ObjectA构造函数"); } public ObjectA(String str) { System.out.println("ObjectA带参数的构造函数"); } /*{ System.out.println("ObjectA构造代码块"); }*/ static { System.out.println("ObjectA静态代码块"); objectB = new ObjectB("123"); System.out.println("objectA.objectB:" + objectB); // System.out.println(this); System.out.println("objectA.ObjectB.objectA:" + ObjectB.objectA); } }
package com.qinzj; /** * @Author: qinzj * @Date */ public class ObjectB { public static ObjectA objectA = null; public ObjectB() { // objectA = new ObjectA(); System.out.println("ObjectB构造函数"); } public ObjectB(String str) { System.out.println("ObjectB带参数的构造函数"); } /*{ System.out.println("ObjectB构造代码块"); }*/ static { System.out.println("ObjectB静态代码块"); objectA = new ObjectA("123"); System.out.println("objectB.objectA:" + objectA); System.out.println("objectB.ObjectA.objectB:" + ObjectA.objectB); } }
package com.qinzj; /** * @Author: qinzj * @Date */ public class CycleTest { public static void main(String[] args) { /*ObjectA objectA = new ObjectA(); System.out.println(objectA);*/ System.out.println(ObjectA.objectB); /*System.out.println("1-main.ObjectA.objectB:" + ObjectA.objectB); ObjectB objectB = new ObjectB(); System.out.println(objectB); System.out.println("2-main.ObjectA.objectB:" + ObjectA.objectB);*/ } }
相关推荐
为了彻底掌握 Spring Bean 的循环依赖,我们需要搞清楚四个问题:普通 Bean 的非循环依赖 Bean 生命周期的流程、AOP 代理 Bean 的非循环依赖 Bean 生命周期的流程、普通 Bean 的循环依赖 Bean 生命周期的流程和 AOP ...
1. **Freemarker模板语言**:Freemarker模板由普通的文本和控制结构(如条件语句、循环)组成,这些结构用特定的语法表示。例如,`<#if>`用于条件判断,`<#list>`用于遍历集合,`${}`用于插入变量值。 2. **模板...
- **面向对象**:Java是一种纯面向对象的语言,支持封装、继承、多态等特性。 - **平台无关性**:Java程序可以在任何安装了Java虚拟机(JVM)的平台上运行,这得益于Java编译后的字节码格式。 - **安全性**:Java...
7. **循环依赖**:Spring如何解决循环依赖问题。 8. **设计模式**:Spring中用到的设计模式。 ### Netty框架 #### 关键知识点: 1. **BIO/NIO/AIO**:传统I/O模型与现代异步非阻塞I/O模型的对比。 2. **Netty组件...
- **强引用**:最普通的引用类型,通过对象名直接引用对象。 - **软引用**:当 JVM 认为有必要回收内存之前,即使内存不足也不会被回收。 - **弱引用**:更弱一些的引用类型,在下一次垃圾回收时会被回收。 - **...
音效和音乐的播放可能依赖于Java的AudioClip类或第三方库如JLayer,使得游戏更加生动有趣。 最后,游戏的配置文件可能采用XML或JSON格式,便于读取和修改游戏参数,如飞机的速度、炮台的攻击力等。 总的来说,...
1. **环境配置**:安装Thymeleaf的Maven依赖,并配置Spring Boot项目以支持Thymeleaf模板引擎。 2. **创建模板**:编写HTML模板文件,添加Thymeleaf的指令,例如,使用`th:text`、`th:href`等将Java对象的属性值...
- **Inner Class**:普通的内部类,需要依赖于外部类的实例。 **27. 内部类可以引用它的包含类的成员吗?有没有什么限制?** 内部类可以引用包含类的成员,包括私有成员。但是,如果内部类是静态内部类,则不能...
- **什么是Java**:Java是一种广泛使用的高级编程语言,以其平台独立性、面向对象的特点而闻名。由Sun Microsystems开发并在1995年发布。 - **jdk1.5之后的三大版本**:自JDK 1.5以来,重要的三个版本包括: - **...
- 实验包括文件加密、添加行号、使用RandomAccessFile处理文件以及对象的序列化与反序列化,学习Java I/O系统。 9. **网络编程** - 实验涉及TCP和UDP协议,如读取服务器文件、接收对象和基于UDP的图像传输,了解...
- **程序计数器**:它是线程私有的,可以看作是当前线程所执行的字节码的行号指示器,分支、循环、跳转、异常处理和线程恢复等都需要依赖这个计数器完成。 - **虚拟机栈**:同样属于线程私有,描述的是Java方法执行...
因为静态方法在类加载时就存在,而非静态方法依赖于对象的存在。 #### 14. `Integer`与`int`的区别 - `int`是基本数据类型,直接存储数值。 - `Integer`是`int`的封装类,提供了更多的功能,如各种数学运算和格式...
3. 创建`Shell`对象:`Shell`是SWT中的顶级窗口,相当于一个普通的窗口。在`Display`上创建`Shell`,并设置其属性。 ```java Shell shell = new Shell(display); shell.setText("Java App with Embedded IE"); ...
首先,我们来看一下普通的Bean循环依赖的例子。在给定的代码中,有两个类BeanA和BeanB,它们互相依赖: ```java public class BeanA { private BeanB beanB; public BeanB getBeanB() { return beanB;} public ...
13. 不能从一个static方法内部直接调用非static方法,因为非static方法需要依赖于具体的对象实例,而static方法是属于类的。 14. Integer是int的包装类,用于将int类型的值包装成对象。int是基本数据类型,不是对象...
- 静态变量属于类,不依赖于对象存在,而实例变量属于对象,每个对象有自己的副本。 13. **静态方法和非静态方法** - 不可以从静态方法内部直接调用非静态方法,因为静态方法在类加载时就可执行,不需要对象实例...
以上就是对Java最新基础面试题的一些详细解释和解答,涵盖了变量修饰、文件结构、关键字、循环控制、数据类型限制、位运算以及大规模计算的设计思路等多个方面。了解并掌握这些知识点对于提升Java程序员的基础能力和...
7.2 Java普通方法的组成部分 157 7.2.1 访问控制符:public 158 7.2.2 返回值和关键字void 158 7.2.3 方法名(Method Name) 159 7.2.4 参数列表(Parameter List) 159 7.2.5 方法体(Method Body) 160 ...
- **`static`方法调用非`static`方法**:不可以从`static`方法内部直接调用非`static`方法,因为非`static`方法依赖于特定的对象实例。 #### 4. 类型与封装 - **`Integer`与`int`**:`Integer`是`int`的包装类,它...