天天看点

java 类变量和实例变量的初始化

实例变量的初始化

<span style="font-size:18px;">class WeChat {
public WeChat (String name){
this.name = name;
}
{
name = "IT90s最前线 微信公众号";
}
String name = "表白大师";
}</span>
           
<span style="font-size:18px;">//当new一个对象出来时,name会是什么呢</span>
           
<span style="font-size:18px;">WeChat wechat = new WeChat("摇滚英语");</span>
           
<span style="font-size:18px;"></pre>执行过程中name的值是怎么变化的呢,搞清这一点,对实例化变量的初始化也就了解的够深了,<p></p><p><span style="font-size:18px"></span></p><pre name="code" class="java">name = “表白大师”;
name = "摇滚英语";
name = "IT90s最前线"</span>
           

首先被调用的就是非静态的代码区,然后就是定义变量时的初始值,非静态代码区的执行顺序和定义变量时的执行顺序是相同的,构造则是最后执行的。

类变量的初始化时机

对于类变量,在语法上有两个地方可以对其进行你执行初始化操作,首先就是在定义该类变量的时候,显示初始化,然后就是在静态代码块中对其进行初始化,在静态代码块中对其进行初始化和在定义的时候对其进行初始化拥有相同的作用,它们 的执行顺序是相同的,也就是会按着代码编写顺序来执行。

代码示例

<span style="font-size:18px;">public class Wechat (){
static {
name = "IT90s最前线";
system.out.println(name);
}
{
static String name = "表白大师";
System.out.println(name);
}
}</span>
           

该段代码执行过后,输出的内容为 IT90s最前线 然后就是 表白大师,但是这样的执行只会被执行一次,就是JVM首次创建类的时候.之后当你在进行创建对象的时候也不会在执行。