JAVA基礎(chǔ) 語句標(biāo)簽的合法使用,以及{}語句塊到底有什么用?
更新時間:2012年08月26日 11:10:25 作者:
以前的一個思維誤區(qū),for(){},if(){}之類的用法中,邏輯if()和語句塊{}應(yīng)該是相互獨(dú)立的兩種語法
如寫這樣的一段代碼:
int i;
{
int j=1;
i=j;
}
如果這段代碼是存在于類定義區(qū)域,那么我們知道它是個普通的語句塊,用于初始化類屬性的內(nèi)容,它會在類實(shí)例化的時候被調(diào)用,里面可以執(zhí)行一些方法。
在很多實(shí)例里,它會用于單例等模式,之前加上一個static,來為復(fù)雜的類初始化內(nèi)容,可以避免一些由于加載順序引起的運(yùn)行期異常。
但是,如果這段代碼出現(xiàn)在方法里呢?
它基本一點(diǎn)意義都沒有。在我自己從前的想法里,它就是個把代碼括起來的格式,沒有其他。
今天寫了一點(diǎn)和“語句標(biāo)簽”相關(guān)的代碼:
label17: int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag)
break label17;
return 0;
在“:”位置出現(xiàn)了異?!癝yntax error on token ":", { expected after this token”。
即是說,當(dāng)代碼無法單行存在的時候(int i在方法體內(nèi)部必須有明確的實(shí)例化\賦值位置),label17需要用語句塊標(biāo)明。
正確的格式是:
label17: {
int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag)
break label17;
return 0;
}
或者:
label17:
int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag){
break label17;
return 0;}
再來看個錯誤的用法:
label13: int x = 0;
很明顯,在標(biāo)簽后有個默認(rèn)的單行語句塊,這個x在以后的任何位置都無法被使用到,錯誤。提示如下:
Multiple markers at this line
- x cannot be resolved to a variable
- Syntax error on token "int", delete this token
正確的格式有兩種:
int x = 0;
label13: x = 0;
或者
label13:{ int x = 0;}
于是推想,以前的一個思維誤區(qū),for(){},if(){}之類的用法中,邏輯if()和語句塊{}應(yīng)該是相互獨(dú)立的兩種語法。
復(fù)制代碼 代碼如下:
int i;
{
int j=1;
i=j;
}
如果這段代碼是存在于類定義區(qū)域,那么我們知道它是個普通的語句塊,用于初始化類屬性的內(nèi)容,它會在類實(shí)例化的時候被調(diào)用,里面可以執(zhí)行一些方法。
在很多實(shí)例里,它會用于單例等模式,之前加上一個static,來為復(fù)雜的類初始化內(nèi)容,可以避免一些由于加載順序引起的運(yùn)行期異常。
但是,如果這段代碼出現(xiàn)在方法里呢?
它基本一點(diǎn)意義都沒有。在我自己從前的想法里,它就是個把代碼括起來的格式,沒有其他。
今天寫了一點(diǎn)和“語句標(biāo)簽”相關(guān)的代碼:
復(fù)制代碼 代碼如下:
label17: int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag)
break label17;
return 0;
在“:”位置出現(xiàn)了異?!癝yntax error on token ":", { expected after this token”。
即是說,當(dāng)代碼無法單行存在的時候(int i在方法體內(nèi)部必須有明確的實(shí)例化\賦值位置),label17需要用語句塊標(biāo)明。
正確的格式是:
復(fù)制代碼 代碼如下:
label17: {
int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag)
break label17;
return 0;
}
或者:
label17:
int i;
int j;
ThreadGroup[] arrayOfThreadGroup;
if (flag){
break label17;
return 0;}
再來看個錯誤的用法:
復(fù)制代碼 代碼如下:
label13: int x = 0;
很明顯,在標(biāo)簽后有個默認(rèn)的單行語句塊,這個x在以后的任何位置都無法被使用到,錯誤。提示如下:
Multiple markers at this line
- x cannot be resolved to a variable
- Syntax error on token "int", delete this token
正確的格式有兩種:
復(fù)制代碼 代碼如下:
int x = 0;
label13: x = 0;
或者
label13:{ int x = 0;}
于是推想,以前的一個思維誤區(qū),for(){},if(){}之類的用法中,邏輯if()和語句塊{}應(yīng)該是相互獨(dú)立的兩種語法。
相關(guān)文章
利用idea生成webservice客戶端超詳解步驟(wsdl文件的使用)
這篇文章主要給大家介紹了關(guān)于利用idea生成webservice客戶端超詳解步驟,第一次接觸webservice,從采坑到采坑,算是了解了一些,明白了一些,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
java設(shè)計模式—靜態(tài)代理模式(聚合與繼承方式對比)
下面小編就為大家?guī)硪黄猨ava設(shè)計模式—靜態(tài)代理模式(聚合與繼承方式對比)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
mybatis實(shí)體類字段大小寫及字段獲取不到值問題
這篇文章主要介紹了mybatis實(shí)體類字段大小寫及字段獲取不到值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
解決spring boot 1.5.4 配置多數(shù)據(jù)源的問題
下面小編就為大家?guī)硪黄鉀Qspring boot 1.5.4 配置多數(shù)據(jù)源的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
springboot?vue測試列表遞歸查詢子節(jié)點(diǎn)下的接口功能實(shí)現(xiàn)
這篇文章主要為大家介紹了springboot?vue測試列表遞歸查詢子節(jié)點(diǎn)下的接口功能實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Spring?Boot項(xiàng)目如何使用Maven打包并帶上依賴
在這篇博客中,介紹如何使用Maven將Spring?Boot項(xiàng)目及其依賴項(xiàng)打包成一個可執(zhí)行的jar文件。我們將使用Spring?Boot的spring-boot-maven-plugin插件來完成這個任務(wù),感興趣的朋友跟隨小編一起看看吧2023-06-06

