public class QQ { public static void main(String[] args) { new B(); } } class A { static { System.out.println("A静态代码块"); } { System.out.println("A类代码块"); } public A() { System.out.println("A构造方法"); } } class B extends A { sta…
java里初始化一个类的对象,通过初始化快或者构造方法进行数据赋值.与其相关的执行代码有这么几种: 静态初始化块 初始化块 构造方法 静态初始化块 静态初始化块只在类加载时执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量. 非静态初始化块 非静态初始化块在每次初始化实例对象的时候都执行一次,可以给任意变量赋值. 构造方法 在每次初始化实例对象时调用. 重点:执行顺序-> 在加载类时执行一次静态初始化块(之后不再调用). 在每次初始化实例对象时:先执行非静态初始化块,再执行构…
class A { public A(){ System.out.println("测试!!!!!!!!!!!"); } } class Demo19 extends A { { x=7;//代码块初始化 System.out.println("hello world!测试代码块的执行顺序!AAAAAAAAAAA"); } public int x=1;//这里不会初始化变量值 只会声明变量 public int y=2;//这里不会初始化变量值 只会声明变量 pu…
1.使用java.exe命令运行某个类的时java.exe Person2.创建一个类的对象时Person p=new Person();3.访问类中的静态成员变量(赋值/获取值)System.out.println(Person.className);4.访问了类中的静态成员方法Person.method();5.创建类的子类对象的时候Student s=new Student();6.使用反射方式来强制创建某个类或接口对应的java.lang.Class对象System.out.printl…
返回本章节 返回作业目录 需求说明: 观察类启动时静态代码块和main()的执行顺序 在Book类中定义静态代码块. 在Book中分别定义一个普通实例方法和静态方法. 在Book类的静态代码块中调用静态方法. 在Book类的主方法中实例化一个Book对象. 实现思路: 观察类启动时静态代码块和main()的执行顺序的实现思路: 在静态代码块.普通实例方法.静态方法和构造方法中分别输出标记性语句. 在main()不写任何代码,观察输出结果. 在main()创建一个Book对象,观察输出结果. 实现…
在排查问题的过程中发现Connector对象有一个静态代码块: static { replacements.put("acceptCount", "backlog"); replacements.put("connectionLinger", "soLinger"); replacements.put("connectionTimeout", "soTimeout"); replacem…
实例化子类时,父类与子类中的静态代码块.实例代码块.静态变量.实例变量.构造函数的执行顺序是怎样的? 代码执行的优先级为: firest:静态部分 second:实例化过程 详细顺序为: 1.父类静态代码块与父类静态变量(取决于代码书写顺序) 2.子类静态代码块与子类静态变量(取决于代码书写顺序) 3.父类实例变量与父类代码块(取决于代码书写顺序) 4.父类构造函数 5.子类实例变量与父类代码块(取决于代码书写顺序) 6.子类构造函数 在JVM加载完类以后,类在被使用的时候初始化,静态部分只在类…
上面的例中,当打断点调试时,断点断住时, Attr1属性的get块就会执行一次. 两个断点加在逻辑中对Attr1的访问,最后发现CTest get Attr1.打印了3次. 得到的结论是:多余的2次打印是由于断点使得程序中断引发的,中断后调试器需要获取Attr1的数值,对get块进行调用. 不调试直接运行程序,发现只打印1次CTest get Attr1.  与预期相符! 这是调试器引发的海森伯效应.调试状态下,Attr1的get逻辑被执行n次. 所幸,vs提供了调试选项来关闭调试器的这种行为:…
1.final-最终 (1)final的特点 final修饰类不可以被继承,但是可以继承其他类 final修饰的方法不可以被覆盖,但父类中没有final修饰方法,子类覆盖后可以加final final修饰的变量称为常量,这些变量只能赋值一次 引用类型的变量值为对象地址值,地址值不能更改,但是地址内的对象属性可以修改 修改成员变量,需要对创建对象前赋值,否则报错. 2.static-静态,不创建对象就可以调用方法 (1)static特点 被static修饰的成员变量属于类,不属于这个类的对象 被s…
Son子类 public class Son extends Parent { static String y ="son的static属性"; public static void main(String[] args) { new Son(1); } public Son(int x) { System.out.println("I'm son 的构造器--"); } { System.out.println("son普通代码块--"); }…