【Java基础篇】While(true) 和 for(;;)哪个性能更好呢
2024-01-02 00:30:48
两个无限循环的性能分析
??两者反编译比较
While(true) 和 for(; 😉 都是做无限循环的代码,他们两个有什么区别呢?
关于这个问题,网上有很多的讨论,今天我收到私信,所以凑着假期,统一回复一下这个问题。
说多了无用,直接反编译吧,看看字节码有什么区别我们就明白了。
首先我们来准备两段代码:
/**
* 编程实现两种方式无限循环性能比较
*/
public class WhileAndFor {
public static void main(String[] args) {
//Code.1 While的无限循环
while (true) {
System.out.println("this is a WhileDemo......");
}
}
}
/**
* 编程实现两种方式无限循环性能比较
*/
public class WhileAndFor {
public static void main(String[] args) {
//Code.1 For的无限循环
for(; ; ) {
System.out.println("this is a ForDemo......");
}
}
}
我们首先在控制台将这两段代码编译成 .class 文件
因为我的这个电脑老是乱码,所以我加了
-encoding utf-8
,你们的不需要就不用加。
javac -encoding utf-8 WhileAndFor.java
然后我们再通过javap
对 .class
文件进行反编译,然后我们就会发现,两个文件的内容,简直是一模一样。
PS F:\Java> javac -encoding utf-8 WhileAndFor.java
PS F:\Java> javap -c WhileAndFor.class
Compiled from "WhileAndFor.java"
public class WhileAndFor {
public WhileAndFor();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #7 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #13 // String this is a Fordemo......
5: invokevirtual #15 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: goto 0
}
PS F:\Java> javac -encoding utf-8 WhileAndFor.java
PS F:\Java> javap -c WhileAndFor.class
Compiled from "WhileAndFor.java"
public class WhileAndFor {
public WhileAndFor();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #7 // Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #13 // String this is a WhileDemo......
5: invokevirtual #15 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: goto 0
}
PS F:\Java>
可以看到,都是通过
goto
来干的,所以,这两者其实是没有任何的区别,针对个人喜欢,用哪个都行。
有人愿意用while(true)
,因为可以更清晰的来出来这是个无限循环,有人愿意用 for(;;)
,因为有些 IDE 对于While(true)会给出警告。当然我们也可以抑制警告是吧,用@SuppressWarnings(“all”),当然抑制警告的属性不是只有all一种是吧,比如抑制资源警告我们用@SuppressWarnings(“resource”)有兴趣大家可以自行去查阅。
祝大家元旦快乐!阖家幸福!家庭幸福美满!事业腾飞冲天!
文章来源:https://blog.csdn.net/Java_Yangxiaoyuan/article/details/135329978
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!