`

JAVA中: for(;;) 与 while(true) 的 区别

阅读更多
结论:从编译后的字节码文件看,for(;;) 和 while(true) 在底层用的相同的实现,两种写法没有区别。

1、for(;;)

@Test
public void test(){


    for(;;){
        System.out.println("for"+"+++");
    }


}


编译后的字节码
public void test();
   flags: ACC_PUBLIC
   Code:
     stack=2, locals=1, args_size=1
        0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
        3: ldc           #3                  // String for+++
        5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        8: goto          0
     LineNumberTable:
       line 18: 0
     LocalVariableTable:
       Start  Length  Slot  Name   Signature
              0      11     0  this   Lcom/jj/jingcai/MyTest;
     StackMapTable: number_of_entries = 1
          frame_type = 0 /* same */
   RuntimeVisibleAnnotations:
     0: #17()


2、while(true)

@Test
public void test(){


    while (true){
        System.out.println("while"+"---");
    }


}



编译后的字节码
public void test();
  flags: ACC_PUBLIC
  Code:
    stack=2, locals=1, args_size=1
       0: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #3                  // String while---
       5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: goto          0
    LineNumberTable:
      line 18: 0
    LocalVariableTable:
      Start  Length  Slot  Name   Signature
             0      11     0  this   Lcom/jj/jingcai/MyTest;
    StackMapTable: number_of_entries = 1
         frame_type = 0 /* same */
  RuntimeVisibleAnnotations:
    0: #17()
分享到:
评论

相关推荐

    Java网络五子棋chessClient.java:客户端主程序。chessInterface.java:客户端的界面。

    java网络五子棋 下面的源代码分为4个文件; chessClient.java:客户端主程序。 chessInterface.java:客户端的界面。 chessPad.java:棋盘的绘制。 chessServer.java:服务器端。 可同时容纳50个人同时在线下棋,...

    JAVA阶段模拟试题

    8在Java中,源文件Test.java中包含如下代码段,则程序编译运行结果是( )。(选择一项) public class Test{ public static main (String [ ] args) { system.out.print(“Hello!”); } } A输出:...

    hotswap-for-java-file.zip

    1、while(true)一直运行的逻辑,有可能热更失败,建议解决方法就是把大括号里面的放到一个方法里面执行 2、匿名内部类不能热更 3、不能修改类结构 4、不能修改方法签名 如果有问题,可以发送邮件到 379993761@...

    java中关于栈的使用

    while (true) { // 将余数入栈 myStack.push(result % n); result = result / n; if (result == 0) { break; } } StringBuilder sb = new StringBuilder(); // 按出栈的顺序倒序排列即可 while (...

    Thinking in java4(中文高清版)-java的'圣经'

    3.15 类型转换操作符 3.15.1 截尾和舍入 3.15.2提升 3.16 Java没有“sizeof” 3.17 操作符小结 3.18 总结 第4章 控制执行流程 4.1 true和false 4.2 if-else 4.3 迭代 4.3.1 do-while 4.3.2 for 4.3.3 逗号操作符 ...

    JAVA课程设计小程序

    JAVA课程设计1 import java.io.*; class Test { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); boolean b = true; try { while (b) ...

    我的java编码规范

    2、任何保留字(如if, while for等等)与紧随其后的左括号之间要有一个空格 // good // bad if (status == true) {... if(status == false) {... 3、任何保留字(如else、catch等)与其前面的右大括号之间要有一个...

    简单的JAVA程序.

    import java.util.*; public class dom6 { public static void main(String[] args){ Scanner input = new Scanner(System.in); String yes; do { System.out.println("★★★★★★★★欢迎使用万年历★...

    mysql-connector-java-commercial-5.1.30-bin.jar

    在C:\Program Files\Java目录下建立mysqlforjdbc子目录,进入该目录将mysql-connector-java-5.1.30-bin.jar到该目录下 进入C:\Program Files\Java\jdk1.7.0_04\lib目录将mysql-connector-java-5.1.30-bin-g.jar拷贝...

    Java基础程序流程控制之循环语句

    java语言继承了c语言的while循环、do/while循环和for循环。  一:while循环  while循环是一种允许重复执行某项任务的控制结构,其语法结构是:  while(布尔表达式){  //语句  }  二:do/while循环  ...

    Java程序设计复习题.docx

    C、在Java中一个类不能同时继承一个类和实现一个接口。D、在Java中类只允许单一继承。 17. 下列类定义中,不正确的是(C )。 A) class x { .... } B) class x extends y { .... } 1 C) static class x implements y1...

    java综合试题(面试题)

    6、Java源程序在转换为机器语言执行过程中既有编译也有解释。 ( ) 7、// 是java的多行注释符。 ( ) 面向对象 3.Java 仅支持类间的单重继承。 ( ) 17.方法可以没有返回值,或有一个返回值,也可以有多个返回值。...

    java语言程序设计课后答案.doc

    java语言程序设计课后答案 作业参考答案 习题一 4、如何建立和运行Java程序, 首先启动文本编辑器,如记事本、UltraEdit等,编辑程序代码,并以.Java作为文件 扩展名保存程序源代码;然后进入dos环境利用javac编译源...

    java 小游戏(5子棋的实现)

    while(true) { message=chessclient.in.readUTF(); acceptMessage(message); } } catch(IOException es) { } } } public class chessClient extends Frame implements ActionListener,KeyListener { ...

    JAVA中的关键字和保留字

    abstract - 1 - boolean - 2 - break - 2 - byte - 2 - case - 3 - catch - 3 - char - 4 - class - 4 - continue - 5 - default - 5 - do - 6 - double - 6 - ...for - 8 - ...true - 18 - ...while - 18 -

    Java文件处理工具类--FileUtil

    import java.io.*; /** * FileUtil. Simple file operation class. * * @author BeanSoft * */ public class FileUtil { /** * The buffer. */ protected static byte buf[] = new byte[1024]; /**...

    java面试800题

    Q0039 java接口与抽象类的区别 "1.接口可以多重继承 ,抽象类不可以 2.接口定义方法,不给实现;而抽象类可以实现部分方法 3.接口中基本数据类型的数据成员,都默认为static和final,抽象类则不是 如果事先知道...

    贪吃蛇_JAVA小游戏

    while(life){ // 42和46行,life为true 或者false move(); for(SnakeListener l : listeners){ l.snakeMoved(Snake.this); //循环,依次调用SnakeMoved方法 } try { Thread.sleep(300); } catch ...

    Java精华(免费版)

    1.1.1.3Java语言中两种异常的差别 Java提供了两类主要的异常:runtime exception和checked exception。所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang....

    Java 2实用教程(第三版)实验指导与习题解答

    Java 2实用教程(第三版)实验指导与习题解答 清华大学出版社 (编著 耿祥义 张跃平) 实验模版代码 建议使用文档结构图 (选择Word菜单→视图→文档结构图) 上机实践1 初识Java 4 实验1 一个简单的应用程序 ...

Global site tag (gtag.js) - Google Analytics