属性的几种初始化方法
1.初始化属性变量的几种时机:
1.1定义时初始化;
1.2构造器中初始化;
1.3在使用之前初试化;
1.4使用实例初始化。
package propertiesinit.one;
public class Main {
//1.定义时初始化definitionInit
private int definitionInit=0;
private int constructorInit;
private String usingInit;
private String instanceInit;
//2.构造方法初始化constructorInit
public Main() {
constructorInit=0;
}
@Override
public String toString() {
//3.使用时初始化usingInit
if(usingInit==null){
usingInit="usingInit";
}
return usingInit;
}
{
//4.实例初始化instanceInit
instanceInit="instanceInit";
}
}
2.code1代码会报错,c变量未初始化;code2正常运行。
package classaccess.one;
//code1
public class Main {
public static void main(String[] args) {
ClassAccess c;
//ClassAccess c = null;
System.out.println(c.i);//The local variable c may not have been initialized
}
}
class ClassAccess{
private ClassAccess(){}
public static int i=1;
}
//code2
package classaccess.one;
public class Main {
public static void main(String[] args) {
//ClassAccess c;
ClassAccess c = null;
System.out.println(c.i);
}
}
class ClassAccess{
private ClassAccess(){}
public static int i=1;
}
注:ClassAccess c;和ClassAccess c = null;是有区别的,前者只是定义了c,后者不仅定义c,同时将c初始化为null。在code2中我们可以注意到,在c为null的情况下我们是可以正常访问引用类型静态成员的(?)。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步