Thinking In Java 学习笔记 5.初始化和清理

本文详细介绍了Java中构造方法的概念及其使用方式,包括构造方法与类的关系、构造方法的重载、默认构造方法的特性等。同时,文章还探讨了初始化顺序、静态变量与实例变量的区别,以及初始化字句的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造器 构造方法 与类同名 没有返回值 自动初始化
可以有多个,带不同类型的参数,没有写构造方法时会有默认构造方法,它没有参数,默认构造器是default的。
需要在包外返回某个类对象时需要重写构造器。
overloading 方法重载 方法名相同,参数类型顺序不同
向下转型需要强制类型转换,向上转型自动转换

this this 关键字只能用于那些特殊的类——需明确使用当前对象的句柄。


static
1.我们不可从一个 static方法内部发出对非 static方法的调用
2.若将一个 static方法置入一个类的内部,它就可以访问其他static 方法以及static 字段。
3.它意味着一个特定的方法没有this。

垃圾回收
垃圾收集并不等于“破坏”!
我们的对象可能不会当作垃圾被收掉!
垃圾收集只跟内存有关!
局部变量需要手动初始化, 全局变量默认初始化
内存分配以较大的块为单位,每个块由相应的代数来记录它是否存活,某个块被引用,代数增加
停止——复制
标记——清扫(只会产生少量垃圾时使用)
初始化顺序
主类,先static代码块。再main
先静态对象,后非静态对象
静态变量和方法 只初始化一次
在类的内部,对象在任何方法调用之前被初始化
static main
new 一个类 先初始化成员变量,再初始化构造方法
静态代码块
static int i;
static{
i = 47;
}
实例初始化字句
String s1;
String s2;
{
s1 = new String("abc");
s2 = new String("cccc");
System.out.println(s1 + s2);
}
初始化顺序
class A{
static {
System.out.println("static A");
}
void f() {
System.out.println("A.f()");
}
void g() {
this.f();
}
}
public class Test extends A{
void f() {
System.out.println("Test.f()");
}
void g() {
this.f();
super.g();
System.out.println("Test.g()");
}
public static void main(String[] args) {
Test t = new Test();
t.g();
}
static {
System.out.println("static Test");
}
}
output
static A
static Test
Test.f()
Test.f()
Test.g()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值