Products
GG网络技术分享 2025-11-22 08:34 0
哇哈哈,巨大家优良!今天我要给巨大家讲讲Java对象初始化的学问,还有那东西啥依赖单次加载的技巧。听起来优良高大巨大上啊,但是别怕,我会用Zui轻巧松的话来说明白给你们的。

构造器是啥呢?就是用来创建对象的,就像是给细小汽车装上轮子一样。你想造一个对象,就得用构造器来帮忙。
比如说 我们有一个类叫“细小汽车”,我们想要一个“细小汽车”对象,就得这样写:
class 细小汽车 {
public 细小汽车 {
// 这里写一些初始化的代码
}
}
然后我们就Neng这样创建一个“细小汽车”对象了:
细小汽车 myCar = new 细小汽车;
静态工厂方法,听起来优良像是个工厂里用来生产东西的方法。其实呢,它就是一个类里的静态方法,用来创建对象。
Ru果构造方法不Neng直接访问, 我们就用静态工厂方法,这就像是一个细小暗地,只有我们晓得怎么用。Ru果构造方法不Neng直接访问,我们叫它“单例模式”。
比如说 我们有一个“电池”类,我们不想让用户直接创建“电池”对象,我们就用静态工厂方法:
class 电池 {
private 电池 {
// 私有构造器,不Neng直接访问
}
public static 电池 getBattery {
return new 电池;
}
}
Class类,这玩意儿有点麻烦,但是hen关键。它是用来反射的,就是Neng动态地创建对象。
我们先说说用Class类的forName方法来实例化一个Class对象,这玩意儿过程叫反射操作。
然后我们用Class类中的newInstance方法来创建对象。Ru果我们要创建一个带参数的类, 我们需要用getConstructors方法来获取全部的构造方法,然后再用newInstance方法。
哇,数组的初始化也有三种方式?那我来给巨大家介绍一下:
方式一:
String strs = new String; strs = ""; strs = "";
方式二:
String strs = new String{ "", "" };
方式三:
String strs = { "", "" };
三种方式, dou有自己的用场景,在合适的时候用就Neng了。
Java对象的初始化基本上有几种形式呢?我来给你们数一数:
创建对象时初始化,这玩意儿Zui常见了。
二、初始化块
这玩意儿比比kan少许见,但是有些特殊需求的类会用它。
三、方法
这玩意儿是setter方法,挺方便的,但是兴许会引发空指针异常。
四、 规定
全部的对象,变量初始值dou为null,Ru果不初始化,程序就无法用null型Zuo逻辑操作,会报异常或者错误。
所以我们要对对象进行初始化。
搞懂的几个特殊加载过程:
静态代码块、构造代码块,构造方法。
有静态方法先加载,全部的静态方法加载完毕之后进入对象的构建初始化行为1
施行构造代码块初始化行为2
调用无参构造函数初始化对象
施行第一行:super;调用父类无参数构造函数一直往上调。Ru果父类有构造代码块先施行。
注意静态代码是Zui先加载的,无论几许多个父类。
自己许多试着操作练习,kankan运行后来啊,加深厚搞懂!
初始化就是给变量一个初始值。
比方说:
声明一个变量: String aa = "abc"; int cc = 0; 其中abc和0就是初始化的值, 再说说值不一定是abc或者0加入你覆盖了aa的值如下:
aa = "def"; cc=1; 那再说说aa变量的值就是def,cc变量就是1了初始化的目的是为了让变量有值,别让用时出现异常。
资料:
作用
遇到new, getstatic,putstatic,或invokestatic这4条字节码指令时Ru果类没有进行过初始化,则需要先触发其初始化。生成这4条指令单Zui常见的Java代码场景是:
用new关键字实例化对象的时候, 读取或设置一个类的静态字段的时候,以及调用一个类的静态方法的时候。
用java.lang.reflect包的方法对类进行反射调用的时候, Ru果类没有进行过初始化,则需要先触发其初始化。
当初始化一个类的时候,Ru果找到其父类还没有进行初始化,则需要先触发其父类的初始化。
当虚拟机启动时 用户需要指定一个要施行的主类方法的那东西类),虚拟机会先初始化这玩意儿主类。
Demand feedback