java类中变量初始化

一般的初始化

public class BedAndBreakfast {

    // initialize to 10
    public static int capacity = 10;

    // initialize to false
    private boolean full = false;
}

当变量值有效且可以写成一行时,便可以在变量初始化的时候同时赋上处值。如果变量的初始化需要一定的逻辑,比如要通过for或者if语句后才能得到初值,那么这种方式不太适合。

类中变量有两种,类变量和实例变量。他们都可以在构造函数中初始化,但是也可以用其他的方式分别对他们初始化,下面将介绍。

静态初始块

static {
    // whatever code is needed for initialization goes here
}

静态初始快通过被大括号{}抱含,static来声明。在这里可以执行一定逻辑并对类变量初始化。如果有多处静态初始块,那么他们会按照被定义的顺序执行。在类被类加载器加载的时候静态变量会被初始化(猜的)。

另一种静态变量的初始化是提供一个静态方法来初始化

class Whatever {
    public static varType myVar = initializeClassVariable();
        
    private static varType initializeClassVariable() {

        // initialization code goes here
    }
}

实例变量初始化

和静态变量相似,只是少了static声明。这个代码块的代码实际上会被编译器拷贝到各个构造函数中去,因此实现了在不同构造函数中代码块的共享。

{
    // whatever code is needed for initialization goes here
}

当然,也可以通过final方法来初始化实例变量。

class Whatever {
    private varType myVar = initializeInstanceVariable();
        
    protected final varType initializeInstanceVariable() {

        // initialization code goes here
    }
}

非final方法初始化会在变量初始化的时候产生错误。

参考:

https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值