包含gotojava的詞條

本文目錄一覽:

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-tw/n/134582.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FIXX的頭像FIXX
上一篇 2024-10-04 00:06
下一篇 2024-10-04 00:06

相關推薦

發表回復

登錄後才能評論