原來java中也有類似goto語句的標籤啊--java label標籤(一)
阿新 • • 發佈:2019-02-06
文章來源 http://blog.csdn.net/sshi1984/article/details/3915452
goto語句的危害:
goto語句是在原始碼級上的跳轉,這使其招致了不好的聲譽。若一個程式總是從一個地方跳到另一個地方,還有什麼辦法來控制程式的流程。
java中的“goto”:
雖然Java中goto語句只是java的一個保留字,沒有起任何作用,但是我今天在使用continue和break語句時,還是發現了其中又goto語句的影子。因為continue和break語句都支援跳到一個Label的位置。下面是具體的用法:
inner:
for( int i = 0 ; i<3 ;i++ ){
System.out.println("iiii===>"+i);
for( int j =0 ; j<5; j++ ){
if( j == 1 )
continue inner;
System.out.println("j===>"+j);
}
}
上面一段語句的輸出為
iiii===>0
j===>0
iiii===>1
j===>0
iiii===>2
j===>0
一般的 continue語句都是跳出當前迴圈,但是這個會跳出到標記inner的位置。從這段程式可以看出,當跳到標籤inner的時候是繼續進行for迴圈,而不是重新開始。
Ps:
在java中,標籤起作用的唯一的地方是在迭代語句之前。
在java中需要使用標籤的唯一理由就是因為有迴圈巢狀的存在,而且想從多層巢狀中break或continue。
goto語句的危害:
goto語句是在原始碼級上的跳轉,這使其招致了不好的聲譽。若一個程式總是從一個地方跳到另一個地方,還有什麼辦法來控制程式的流程。
java中的“goto”:
雖然Java中goto語句只是java的一個保留字,沒有起任何作用,但是我今天在使用continue和break語句時,還是發現了其中又goto語句的影子。因為continue和break語句都支援跳到一個Label的位置。下面是具體的用法:
inner:
for( int i = 0 ; i<3 ;i++ ){
System.out.println("iiii===>"+i);
for( int j =0 ; j<5; j++ ){
if( j == 1 )
continue inner;
System.out.println("j===>"+j);
}
}
上面一段語句的輸出為
iiii===>0
j===>0
iiii===>1
j===>0
iiii===>2
j===>0
一般的 continue語句都是跳出當前迴圈,但是這個會跳出到標記inner的位置。從這段程式可以看出,當跳到標籤inner的時候是繼續進行for迴圈,而不是重新開始。
Ps:
在java中,標籤起作用的唯一的地方是在迭代語句之前。
在java中需要使用標籤的唯一理由就是因為有迴圈巢狀的存在,而且想從多層巢狀中break或continue。