本篇內容介紹了“Java代碼塊與代碼加載順序是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

位置:局部位置(方法內部)
作用:限定變量的生命周期,盡早釋放,節約內存
調用:調用其所在的方法時執行
public class 局部代碼塊 {
@Test
public void test (){
B b = new B();
b.go();
}
}
class B {
B(){}
public void go() {
//方法中的局部代碼塊,一般進行一次性地調用,調用完立刻釋放空間,避免在接下來的調用過程中占用棧空間
//因為棧空間內存是有限的,方法調用可能會會生成很多局部變量導致棧內存不足。
//使用局部代碼塊可以避免這樣的情況發生。
{
int i = 1;
ArrayList<Integer> list = new ArrayList<>();
while (i < 1000) {
list.add(i ++);
}
for (Integer j : list) {
System.out.println(j);
}
System.out.println("gogogo");
}
System.out.println("hello");
}
}位置:類成員的位置,就是類中方法之外的位置
作用:把多個構造方法共同的部分提取出來,共用構造代碼塊
調用:每次調用構造方法時,都會優先于構造方法執行,也就是每次new一個對象時自動調用,對 對象的初始化
class A{
int i = 1;
int initValue;//成員變量的初始化交給代碼塊來完成
{
//代碼塊的作用體現于此:在調用構造方法之前,用某段代碼對成員變量進行初始化。
//而不是在構造方法調用時再進行。一般用于將構造方法的相同部分提取出來。
//
for (int i = 0;i < 100;i ++) {
initValue += i;
}
}
{
System.out.println(initValue);
System.out.println(i);//此時會打印1
int i = 2;//代碼塊里的變量和成員變量不沖突,但會優先使用代碼塊的變量
System.out.println(i);//此時打印2
//System.out.println(j);//提示非法向后引用,因為此時j的的初始化還沒開始。
//
}
{
System.out.println("代碼塊運行");
}
int j = 2;
{
System.out.println(j);
System.out.println(i);//代碼塊中的變量運行后自動釋放,不會影響代碼塊之外的代碼
}
A(){
System.out.println("構造方法運行");
}
}
public class 構造代碼塊 {
@Test
public void test() {
A a = new A();
}
} 位置:類成員位置,用static修飾的代碼塊
作用:對類進行一些初始化 只加載一次,當new多個對象時,只有第一次會調用靜態代碼塊,因為,靜態代碼塊 是屬于類的,所有對象共享一份
調用: new 一個對象時自動調用
public class 靜態代碼塊 {
@Test
public void test() {
C c1 = new C();
C c2 = new C();
//結果,靜態代碼塊只會調用一次,類的所有對象共享該代碼塊
//一般用于類的全局信息初始化
//靜態代碼塊調用
//代碼塊調用
//構造方法調用
//代碼塊調用
//構造方法調用
}
}
class C{
C(){
System.out.println("構造方法調用");
}
{
System.out.println("代碼塊調用");
}
static {
System.out.println("靜態代碼塊調用");
}
}執行順序 靜態代碼塊 -----> 構造代碼塊 -------> 構造方法
“Java代碼塊與代碼加載順序是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯-成都網站建設公司網站,小編將為大家輸出更多高質量的實用文章!
分享名稱:Java代碼塊與代碼加載順序是什么-創新互聯
網站網址:http://www.yijiale78.com/article4/ddhcie.html
成都網站建設公司_創新互聯,為您提供網站內鏈、定制開發、營銷型網站建設、App開發、網站營銷、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯