本文目錄一覽:
java支持goto語句嗎?
準確來說,java中沒有goto這樣的語句,當然即使在c中也不推薦使用。
在java中可以找到實現類似功能的方法,該方法僅限於循環嵌套跳轉到外層循環的情況。例如你可以在外層循環上使用lablename:(lablename是自定義標籤名)的方式標註,在內循環中,可以使用break lablename;或者continue lablename跳轉到外循環上。這樣就可以模擬出類似goto語句的功能。
java裡面goto怎麼用
或許你已經聽過goto語句之爭,也知道在Java中goto仍然是一個保留的keyword,但不允許使用。先來看看goto的經典使用方法:
1:statement1;
2:statement_label_for_section2:
3:statement2;
4:goto statement_label_for_section2;
可以看出 2:statement_label_for_section2: 為一代碼片段(Section)的開始標記。
Java語言中不允許使用goto,但可以使用像 2:statement_label_for_section2: 一樣的代碼片段標記作為 break/continue的跳轉目標。
相關標準文件請參見:Java Language Spec. 14.7 Labeled Statements
應用
嵌套循環中,我有時會需要從內循環中直接跳到外循環。用Labeled Statements就可以方便實現。
1: for(int I1 = 0; I1 10; I1++) {
2: loop1:
3: for(int I2 = 0; I2 20; I1++) {
4: break loop1;
5: }
6: }
continue的用法與break的用法是一樣的。
Java語言中還有很多沒有廣泛應用的小點子。請參見:Java Language Spec.
Blocks
Java Language Spec. 14.2 Blocks
或許你跟我一樣都是個懶鬼。特別在Test Case 代碼當中,我經常需要在同一Method中定義一大堆的對象,這些對象的操作大者是大同小異的,你應該知道我在想什麼了:CopyPast。而為每個對象都起一個不同的名字是件痛苦的事。同時這些對象往往只是短命鬼。
1:import java.util.ArrayList;
2:import java.util.Collection;
3:
4:public class T2 {
5:
6: public static void main(String[] args) {
7: {
8: Collection c = new ArrayList();
9: c.add( “1” );
10: c.clear();
11: }
12: {
13: Collection c = new ArrayList();
14: c.add( “2” );
15: c.clear();
16: }
17: }
18:
19:}
Java有沒有goto?
goto是java語言中的保留字,目前還沒有在java中使用。
其實goto這個詞是C語言中的,goto語句通常與條件語句配合使用,可用來實現條件轉移, 構成循環,跳出循環體等功能。而在結構化程序語言
中一般不主張使用goto語句, 以免造成程序流程的混亂,使理解和調試程序都產生困難…”
java中類似於C語言的goto無條件轉向語句的語法是什麼?
Java不存在goto語句,但是已經用”類名.方法“的形式進行方法調用。
解釋:goto語句作為java的保留字段,但是沒有實際的應用的。goto語句實際上是C語言的範疇,用來定義指針跳轉用的,java中通過”類名.方法“的形式進行的方法調用,不在用goto語句進行實現,這個是java的一大改進。
JAVA中實現goto語句功能 :
使用方法如下:
1 label0:
2 for (int k = 0; k 10; k++) {
3 ……….
4 label1:
5 for (int j = 0; j 10; j++) {
6 …………….
7 break label0;
8 }
9 ………..
10 label2:
11 for (int kk = 0; kk 10; kk++) {
12 …………..
13 break label0;
14 }
15 }
16 System.out.println(“here”);
將需要跳轉的到的循環開始處使用lablename:的方式標註(lablename是自定義標籤名)
例如,第1行代碼所示.在循環體內,可以使用break lablename;或者continue lablename跳轉到該處第1行代碼的地方,第7行代碼執行後,將跳轉到第1行代碼處.
break 和continue的區別就是,break跳到lablename處後,接下來是執行該lablename所代表的循環之後的語句,例如第16行代碼;而 continue則是將循環記數加1或者減1繼續執行lablename所代表的循環,直到條件不滿足或遇到return語句為止.
這樣我們就可以在循環中任何位置跳轉到父循環外去,無論嵌套多深.
注意:
1. lablename標籤名和所代表的標籤之前不能有任何其他的語句,例如第1行和第2行之間不能有其他的任何語句出現,否則編譯不通過;
2.該跳轉只能跳轉到祖先級循環,同級循環之間不能跳轉,例如第13行不能跳轉到第4行
3.雖然該跳轉在一定程度上方便了編程,不過最好盡量避免,因為它和goto一樣在一定程度上破壞了結構化編程的特點。
更詳細的例子可參考如下鏈接:
java中有沒有goto語句
java確實提供了goto語句,並且它是保留的關鍵字,但是JVM並沒有給它提供任何的實現。或許是java並沒打算放開使用這種機制。
不過,我則會採用特殊手段實現類似goto的功用:
import static java.lang.System.out;
class Test{
public static void main(String[] args) throws Exception {
int step=1;
int sum=0;
loop:
for(;true;){
if(step=100){
sum+=step;
step++;
continue loop;
}else break;
}
out.println(“sum=”+sum);
}
}
原創文章,作者:FIXX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134582.html