随笔
1.以下代码无法通过编译:
public
class
Test1 {
public
static
void
main(String[] args) {
Foo obj=
new
Foo();
}
}
class
Foo{
int
value;
public
Foo(
int
initValue) {
value=initValue;
}
}
原因: 改类给出了一个自定义的构造方法,导致原有的默认构造方法无法使用,导致编译无法通过。
public class Test1 {
public static void main(String[] args) {
int a=6;
Foo obj=new Foo(a);
}
}
class Foo{
int value;
public Foo(int initValue) { //给出的构造方法
value=initValue;
}
}
如上代码就可以通过,因为它正确调用了class 类给定了自定义构造函数。
2.初始化块
Java的初始化块分为静态初始化块和非静态初始化块
静态初始化块
static{ //初始化内容 }
非静态初始化块
{ //初始化内容 }
静态初始化块仅能初始化类变量,即static修饰的数据成员。非静态初始化块在对象每次生成时都会被执行一次,可以初始化类的实例变量。两种初始化块不可以传参数。
非静态初始化块在构造函数执行时且构造函数主体代码没执行前执行
静态初始化块、非静态初始化块、构造函数 执行的顺序为:静态初始化块->非静态初始化块->构造函数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix