08-02 Java 代码块,代码块执行的先后顺序问题

前端之家收集整理的这篇文章主要介绍了08-02 Java 代码块,代码块执行的先后顺序问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

代码

代码块:在Java中,使用{}括起来的代码被称为代码块。 根据其位置和声明的不同,可以分为 局部代码块:局部位置,用于限定变量的生命周期。 构造代码块:在类中的成员位置,用{}括起来的代码。每次调用构造方法执行前,都会先执行构造代码块。 作用:可以把多个构造方法中的共同代码放到一起,对对象进行初始化。 静态代码块:在类中的成员位置,用{}括起来的代码,只不过它用static修饰了。 作用:一般是对类进行初始化。
面试题?
    静态<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块,构造<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块,构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>的执行顺序?
    静态<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块 -- 构造<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块 -- 构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>
    静态<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块:只执行一次
    构造<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块:每次<a href="https://www.jb51.cc/tag/diaoyong/" target="_blank" class="keywords">调用</a>构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>都执行

<span style="color: #008000;">*/
<span style="color: #0000ff;">class<span style="color: #000000;"> Code {
<span style="color: #0000ff;">static<span style="color: #000000;"> {
<span style="color: #0000ff;">int a = 1000<span style="color: #000000;">;
System.out.println(a);
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;构造<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块</span>

<span style="color: #000000;"> {
<span style="color: #0000ff;">int x = 100<span style="color: #000000;">;
System.out.println(x);
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a></span>
<span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; Code(){
    System.out.println(</span>"code"<span style="color: #000000;"&gt;);
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a></span>
<span style="color: #0000ff;"&gt;public</span> Code(<span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt; a){
    System.out.println(</span>"code"<span style="color: #000000;"&gt;);
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;构造<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块</span>

<span style="color: #000000;"> {
<span style="color: #0000ff;">int y = 200<span style="color: #000000;">;
System.out.println(y);
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;静态<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块</span>
<span style="color: #0000ff;"&gt;static</span><span style="color: #000000;"&gt; {
    </span><span style="color: #0000ff;"&gt;int</span> b = 2000<span style="color: #000000;"&gt;;
    System.out.println(b);
}

}

<span style="color: #0000ff;">class<span style="color: #000000;"> CodeDemo {
<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void<span style="color: #000000;"> main(String[] args) {
<span style="color: #008000;">//<span style="color: #008000;">局部代码
<span style="color: #000000;"> {
<span style="color: #0000ff;">int x = 10<span style="color: #000000;">;
System.out.println(x);
}
<span style="color: #008000;">//<span style="color: #008000;">找不到符号
<span style="color: #008000;">//<span style="color: #008000;">System.out.println(x);
<span style="color: #000000;"> {
<span style="color: #0000ff;">int y = 20<span style="color: #000000;">;
System.out.println(y);
}
System.out.println("---------------"<span style="color: #000000;">);

    Code c </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Code();    
    System.out.println(</span>"---------------"<span style="color: #000000;"&gt;);
    Code c2 </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Code();
    System.out.println(</span>"---------------"<span style="color: #000000;"&gt;);
    Code c3 </span>= <span style="color: #0000ff;"&gt;new</span> Code(1<span style="color: #000000;"&gt;);
}

}

看程序,写结果:

方法,执行B, new student()第一次前,加载student class,执行C, new student()第一次时,执行E,再执行D。因为构造方法放在构造代码块前,也会先执行构造代码块 new student()第二次前,不再执行C,因为静态代码块只执行一次 new student()第二次时,执行E,再执行D。
执行顺序:
林青霞都60了,我很伤心
我是main<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>  --- 
Student 静态<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块
Student 构造<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块
Student 构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>

Student 构造<a href="https://www.jb51.cc/tag/daima/" target="_blank" class="keywords">代码</a>块
Student 构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>

<span style="color: #008000;">*/
<span style="color: #0000ff;">class<span style="color: #000000;"> Student {
<span style="color: #008000;">//<span style="color: #008000;">C
<span style="color: #0000ff;">static<span style="color: #000000;"> {
System.out.println("Student 静态代码块"<span style="color: #000000;">);
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;D</span>
<span style="color: #0000ff;"&gt;public</span><span style="color: #000000;"&gt; Student() {
    System.out.println(</span>"Student 构造<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>"<span style="color: #000000;"&gt;);
}

</span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;E</span>

<span style="color: #000000;"> {
System.out.println("Student 构造代码块"<span style="color: #000000;">);
}
}

<span style="color: #0000ff;">class<span style="color: #000000;"> StudentDemo {
<span style="color: #0000ff;">static<span style="color: #000000;"> {
<span style="color: #008000;">//<span style="color: #008000;">A
System.out.println("林青霞都60了,我很伤心"<span style="color: #000000;">);
}

</span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;static</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; main(String[] args) {
    </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;B</span>
    System.out.println("我是main<a href="https://www.jb51.cc/tag/fangfa/" target="_blank" class="keywords">方法</a>"<span style="color: #000000;"&gt;);

    Student s1 </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Student();
    Student s2 </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; Student();
}

}

 

原文链接:https://www.f2er.com/java/403349.html

猜你在找的Java相关文章