总结
总的来说,面试是有套路的,一面基础,二面架构,三面个人。
最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友
public class Person {
String name;
String sex;
int age;
{
this.name = “花花”;
this.sex = “女”;
this.age = 3;
}
public static void main(String[] args) {
Person person1 = new Person();
Person person2 = new Person();
Person person3 = new Person();
}
}
打断点调试代码,你会发现:person对象均被初始化
使用打印再次验证:
{
this.name = “花花”;
this.sex = “女”;
this.age = 3;
System.out.println(“我是实例代码块!!”);
}
提供构造方法:
public Person() {
System.out.println(“我是构造方法!!!”);
}
输出结果:
以上验证了 构造代码块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行
JVM层面理解:
编译器在编译代码时,会将实例代码块中的内容拷贝到构造方法第一条语句前
多个实例代码块最终会按照定义的先后顺序合并成一份,并将其拷贝到每个构造方法中
验证:
public class Demo {
int a;
{
a = 10;
System.out.println(“实例代码块1”);
}
{
System.out.println(“实例代码块2”);
}
public static void main(String[] args) {
Demo demo = new Demo();
}
}
就地初始化
//就地初始化
public class Person {
String name = “嗯哼”;
String sex = “Unknown”;
int age = 0;
//
{ //实例代码块
this.name = “花花”;
this.sex = “女”;
this.age = 3;
System.out.println(“我是实例代码块!!”);
}
//构造方法
public Person(){
System.out.println(“我是构造方法!!!”);
}
public static void main(String[] args) {
Person person1 = new Person();
Person person2 = new Person();
Person person3 = new Person();
}
}
JVM层面理解:
编译期间,编译器会将就地初始化的内容拷贝到构造方法中,且拷贝在实例代码块之前
静态代码块
用 static{ } 包裹起来的代码片段
只会执行一次,静态代码块优先于构造代码块执行,一般用于初始化静态成员变量
//静态代码块
static {
System.out.println(money);
money = 100;
System.out.println(money);
System.out.println(“我是静态代码块!!!”);
}
输出结果:
打断点,看调试过程:
静态代码块在类加载时只执行一次
在类加载阶段执行,在编译阶段时,编译器会将多个静态代码块按照定义的先后次序依次合并,最终放在生成的方法中
验证:
最后
本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们:
目录:
Java面试核心知识点
一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!
Java面试核心知识点
一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!
[外链图片转存中…(img-Y1qzWuYK-1715374211614)]
Java面试核心知识点