精华内容
下载资源
问答
  • while(true)作为无限循环,经常不知道循环次数的时候使用,并且需要循环内使用break才会停止。run()方法基本都会写while(true)的循环,如下:public class XXXThread implements Runnable {public void run(){...

    while(true)作为无限循环,经常在不知道循环次数的时候使用,并且需要在循环内使用break才会停止。

    run()方法中基本都会写while(true)的循环,如下:

    public class XXXThread implements Runnable {

    public void run(){

    while(true) {

    ……

    }

    }

    }

    使用while(true)的作用:

    run方法中的代码就是线程要运行的代码,运行完毕以后,就不会再次运行,其方法本身并不是无限循环的。而while(true)是为了让run方法中的代码不断重复的运行,也就是让线程不停的运行,便于查看效果。如果去掉,run运行结束,线程也就结束了。

    当然,while(true)并不是run()方法必须的,如果线程的run()部分只需要执行一次,则不需要嵌套while(true)循环。

    while(true)是一个无穷循环语句  我们必须在他的循环语句内部加入一个判断  当他达到了什么要求就会跳出

    int i =1

    while(true)

    {if(i>10)break;

    i++;

    }//这样最后弹出的就是11;

    原文:https://www.cnblogs.com/minixiong/p/11229690.html

    展开全文
  • IMO在while循环使用break并不是那么糟糕。但我可以猜出为什么说话者这么说。所以,如果我有一个while循环是这样的:while (condition1) {if (condition2) {break;}// do other stuff}你绝对可以使代码做这个短:...

    IMO在while循环中使用break并不是那么糟糕。但我可以猜出为什么说话者这么说。

    所以,如果我有一个while循环是这样的:

    while (condition1) {

    if (condition2) {

    break;

    }

    // do other stuff

    }

    你绝对可以使代码做这个短:

    while(condition1 && !condition2) {

    // do other stuff

    }

    扬声器可能会认为break S IN while循环并不是必要的,因为你可以写出你应该写的所有条件,也就是说,在没有限制的情况下。

    但是,情况并非如此。如果我有这个while循环:

    while (condition1) {

    // do other stuff

    if (condition2) {

    break;

    }

    }

    你怎么改变,因此不使用break?

    while (condition1) {

    // do other stuff

    if (condition2) {

    condition1 = false;

    }

    }

    这对我来说似乎不太好。

    让我们把它放到一段有意义的代码中。你认为哪做的是更具可读性:

    while(noWallInFront) {

    walk();

    if (sawFriend) {

    sayHi();

    break;

    }

    }

    while(noWallInFront) {

    walk();

    if (sawFriend) {

    sayHi();

    noWallInFront = false;

    }

    }

    显然,第一个,对不对?第二个人听起来像是在把你的垃圾当作墙来对待。

    展开全文
  • Java do-while循环

    2021-03-06 19:03:07
    Java do-while循环用于多次...Java do-while循环至少执行一次,因为它是循环体之后检查条件。语法:do{//code to be executed}while(condition); // 后置条件检查Java do-while循环执行流程图如下所示 -示例:pu...

    Java do-while循环用于多次迭代程序的一部分或重复多次执行一个代码块。 如果迭代次数不固定,必须至少执行一次循环,建议使用do-while循环。

    Java do-while循环至少执行一次,因为它是在循环体之后检查条件。

    语法:

    do{

    //code to be executed

    }while(condition); // 后置条件检查

    Java do-while循环执行流程图如下所示 -

    501209457c53b1305f4b743ab95a859c.png

    示例:

    public class DoWhileExample {

    public static void main(String[] args) {

    int i = 1;

    do {

    System.out.println(i);

    i++;

    } while (i <= 10);

    }

    }

    执行结果如下 -

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    Java无限do-while循环

    如果在do-while循环中传递参数值为:true,它将是一个无限do-while循环。

    语法:

    do{

    //code to be executed

    }while(true);

    示例:

    public class DoWhileExample2 {

    public static void main(String[] args) {

    do {

    System.out.println("infinitive do while loop");

    } while (true);

    }

    }

    执行结果如下 -

    infinitive do while loop

    infinitive do while loop

    infinitive do while loop

    ctrl+c

    上面的需要按ctrl + c退出程序。

    ¥ 我要打赏

    纠错/补充

    收藏

    加QQ群啦,易百教程官方技术学习群

    注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

    展开全文
  • 如果我将最外部的for循环更改为while循环,它将运行得很快吗? 谢谢~~int length = 200;int test = 0;int[] input = new int[10];for(int i = 1; i <= length; i++) {for (int j = 0; j <=length - i; j++) {...

    假设我有以下代码,有3个for循环可以执行某些操作。 如果我将最外部的for循环更改为while循环,它将运行得很快吗? 谢谢~~

    int length = 200;

    int test = 0;

    int[] input = new int[10];

    for(int i = 1; i <= length; i++) {

    for (int j = 0; j <=length - i; j++) {

    for (int k = 0; k < length - 1; k++) {

    test = test + input[j + k];

    }

    }

    }

    它会优化以测试= 0; 因为未填充数组,所以test = test + input [j + k]; 将始终为零。

    时间到了! 还有idk java,但我在perl中知道,在读取文件的情况下,C风格的循环比while循环特别慢。

    不,更改循环的类型无关紧要。

    唯一可以使其更快的方法是减少循环的嵌套,并减少循环的值。

    for循环和while循环之间的唯一区别是定义它们的语法。根本没有性能差异。

    int i = 0;

    while (i < 20){

    // do stuff

    i++;

    }

    是相同的:

    for (int i = 0; i < 20; i++){

    // do Stuff

    }

    (实际上,for循环要好一些,因为i将在循环后超出范围,而i将在while循环情况下停留。)

    for循环只是语法上更漂亮的循环方式。

    您可以在i周围添加范围,以在完成操作后将其从堆栈中剔除:D

    实际上,由于continue的行为,for循环和while循环略有不同。增量将始终在for循环中发生,而while循环中的继续执行将跳过它,从而导致循环永远继续下去。

    为什么这不是正确的答案?恕我直言,这完全解释了如何使用这些循环。

    这种微优化是没有意义的。

    一会儿循环不会更快。

    循环结构不是您的瓶颈。

    首先优化算法。

    更好的是,不要先进行优化。只有在发现算法中确实存在不依赖I / O的瓶颈后,才进行优化。

    您无法通过将其更改为while来对其进行优化。

    您可以通过更改直线来非常非常非常非常快地提高速度

    for (int k = 0; k < length - 1; k++) {

    通过

    for (int k = 0; k < lengthMinusOne; k++) {

    其中lengthMinusOne是在之前计算的

    此减法运算几乎是(200x201 / 2)x(200-1)倍,对于计算机来说这是很少的数字:)

    这些天,Java编译器通常会优化该调用。但是从技术上讲,您认为它更快。

    呵呵,我有一半期望有人建议将k++更改为++k:D

    您将节省非常非常少的编译时间。现在大多数编译器都支持这种优化,请检查stackoverflow.com/questions/5981460/

    有人建议测试while与for循环,因此我创建了一些代码来测试while循环或for循环是否更快。平均而言,超过100,000个测试,while循环的速度约为95%。我可能编码不正确,我是编码的新手,还要考虑如果我只运行10,000个循环,它们最终在运行期间会变得很均匀。

    编辑当我去测试更多的试验时,我并没有移动所有的数组值。对其进行了修复,以便更轻松地更改您运行的试验次数。

    import java.util.Arrays;

    class WhilevsForLoops {

    public static void main(String[] args) {

    final int trials = 100; //change number of trials

    final int trialsrun = trials - 1;

    boolean[] fscount = new boolean[trials]; //faster / slower boolean

    int p = 0; // while counter variable for for/while timers

    while (p <= trialsrun) {

    long[] forloop = new long[trials];

    long[] whileloop = new long[trials];

    long systimeaverage;

    long systimenow = System.nanoTime();

    long systimethen = System.nanoTime();

    System.out.println("For loop time array :");

    for (int counter=0;counter <= trialsrun; counter++) {

    systimenow = System.nanoTime();

    System.out.print(" #" + counter +" @");

    systimethen = System.nanoTime();

    systimeaverage = (systimethen - systimenow);

    System.out.print( systimeaverage +"ns |");

    forloop[counter] = systimeaverage;

    }

    int count = 0;

    System.out.println("");

    System.out.println("While loop time array:");

    while (count <= trialsrun) {

    systimenow = System.nanoTime();

    System.out.print(" #" + count +" @");

    systimethen = System.nanoTime();

    systimeaverage = (systimethen - systimenow);

    System.out.print( systimeaverage +"ns |");

    whileloop[count] = systimeaverage;

    count++;

    }

    System.out.println("===============================================");

    int sum = 0;

    for (int i = 0; i <= trialsrun; i++) {

    sum += forloop[i];

    }

    System.out.println("for loop time average:" + (sum / trials) +"ns");

    int sum1 = 0;

    for (int i = 0; i <= trialsrun; i++) {

    sum1 += whileloop[i];

    }

    System.out.println("while loop time average:" + (sum1 / trials) +"ns");

    int longer = 0;

    int shorter = 0;

    int gap = 0;

    sum = sum / trials;

    sum1 = sum1 / trials;

    if (sum1 > sum) {

    longer = sum1;

    shorter = sum;

    }

    else {

    longer = sum;

    shorter = sum1;

    }

    String longa;

    if (sum1 > sum) {

    longa ="~while loop~";

    }

    else {

    longa ="~for loop~";

    }

    gap = longer - shorter;

    System.out.println("The" + longa +" is the slower loop by:" + gap +"ns");

    if (sum1 > sum) {

    fscount[p] = true; }

    else {

    fscount[p] = false;

    }

    p++;

    }

    int forloopfc=0;

    int whileloopfc=0;

    System.out.println(Arrays.toString(fscount));

    for(int k=0; k <= trialsrun; k++) {

    if (fscount[k] == true) {

    forloopfc++; }

    else {

    whileloopfc++;}

    }

    System.out.println("--------------------------------------------------");

    System.out.println("The FOR loop was faster:" + forloopfc +" times.");

    System.out.println("The WHILE loop was faster:" + whileloopfc +" times.");

    }

    }

    这是有关此问题的文章的有用链接

    根据它,虽然While和For几乎快一倍,但两者相同。

    但是这篇文章写于2009年,所以我在我的机器上尝试了一下,结果如下:

    使用Java 1.7:Iterator比For和While(仍然相同)快20%-30%

    使用Java 1.6:Iterator比For和While(仍然相同)快大约5%。

    所以我想最好的办法是将它放在您自己的版本和机器上,然后得出结论

    在任何安全的语言中,迭代器的使用通常更快,因为解释器/编译器可以省略边界检查。

    for和while之间的区别是语义:

    在while循环中,只要条件为真,就会循环,这可能会发生很大变化,因为您可能会在循环中使用消除while条件来修改变量。

    通常,在for循环中,您循环N次。这个N可以是变量,但要等到N循环结束后才能移动,因为通常开发人员不会修改在循环条件下评估的变量。

    这是帮助他人理解您的代码的一种方法。您没有义务不修改循环变量,但这是一种常见的(也是很好的做法)。

    即使while循环比for循环快的假设是正确的(事实并非如此),您不得不更改/优化的循环也不会是外部的,而是内部的,因为它们执行的次数更多。

    看看你的算法!您是否事先知道数组中的哪些值被多次添加?

    如果您知道可以减少循环次数,那将导致更好的性能。

    不,您仍在循环相同的次数。没关系。

    While循环和For循环相同

    http://www.mkyong.com/java/while-loop-for-loop-and-iterator-performance-test-java/

    链接中的结论表明,迭代器机制是循环遍历列表的最慢方法。 For和While循环之间没有太多性能差异。

    本文甚至没有说While循环比For循环快。

    有没有人尝试过这样的...

    int i = 20;

    while (--i > -1){

    // do stuff

    }

    相比:

    for (int i = 0; i < 20; i++){

    // do Stuff

    }

    不会有性能差异。试试看!

    JVM和进一步的编译器会将两个循环都变成类似

    label:

    ;code inside your for loop.

    LOOP label

    仅在使用多线程或多处理器编程时才重要。然后,这还取决于您如何将循环分配给各种处理器/线程。

    基于此:https://jsperf.com/loops-analyze(不是我创建的),而while循环通常比for循环慢22%。 至少在Javascript中是这样。

    展开全文
  • java中的for循环的continue 与 while循环的区别是? while循环可能会死循环; for(){}循环——for (int i = 1; i <= 10; i++) { } //i++ 括号里不会有这样的情况; // while 死循环情况 public static ...
  • while和do-while的使用方法

    千次阅读 2021-03-05 21:53:31
    while循环开始后,先判别条件能否满足,假如满足就执行循环体内的语句,执行终了后...举个例子:do-while循环与while循环的不同在于:它先执行循环的语句,然后再判别表达式能否为真, 假如为真则继续循环;假如为假,...
  • Java教程循环是程序的重要流程结构之一。...Java 采用的循环语句与C语言的循环语句相似,主要有 while、do-while 和 for。另外 Java 5 之后推出了 for-each 循环语句,for-each 循环是 for...
  • 在Java中有一种特殊的语句叫做循环语句,它可以实现将一段代码重复执行,例如循环打印100位学生的考试成绩。循环语句分为 while循环语句、do… while循环语句和for循环语句三种。传智播客小编接下来介绍do…while循环...
  • C语言,共有三大常用的程序结构:顺序结构:代码从前往后执行,没有任何“拐弯抹角”;选择结构:也叫分支结构,重点要掌握 if else、switch 以及条件运算符;循环结构:重复执行同一段代码。前面讲解了顺序结构...
  • B:作用 a:跳出单层循环 b:跳出多层循环,需要标签语句的配合 (2)continue:继续 A:用循环,离开此应用场景无意义。 B:作用 a:跳出单层循环的一次,可以继续下一次 C:填空题for(int x=1; x; x++) {if(x%3 == 0) {...
  • 正如其他人所指出的那样,这项测试很多方面存在缺陷。您没有告诉我们您是如何进行此测试的。 但是,我试图实现这样的“天真”测试(没有冒犯):class PrePostIncrement{public static void main(String args[]){for...
  • 对于for来讲:如果将用于控制循环的增量定义for语句。那么该变量只for语句内有效。 for语句执行完毕。该变量内存被释放。2,for和while可以进行互换。如果需要定义循环增量。用for更为合适。 总结: 什么...
  • B:作用 a:跳出单层循环 b:跳出多层循环,需要标签语句的配合 (2)continue:继续 A:用循环,离开此应用场景无意义。 B:作用 a:跳出单层循环的一次,可以继续下一次 C:填空题 for(int x=1; x; x++) { if(x%3 == 0)...
  • 今天涉及的内容是有关流程控制语句、跳转控制语句、数组的定义、Java中的内存分配部分的内容。 循环结构(while循环语句) while循环语句的基本格式: 基本格式: while(判断条件语句){ 循环体语句; } 扩展格式: ...
  • 原标题:Java synchronized while 和 notifyAll来源:scugxl,blog.csdn.net/scugxl/article/details/71434083问题1 为什么是while 而不是if大多数人都知道常见的使用synchronized代码:synchronized (obj) {...
  • 这是我写的第一件事情,我几乎总是至少试图重构它更清楚。有时它不能被帮助(或者替代方法是有一个bool变量除了指示循环的结束,没有什么意义,不如break语句清楚),但它至少值得尝试。作为使用break比flag更清楚的...
  • 原文地址:再见面试官:为什么 wait() 方法需要写 while 里,而不是 if? 问:为什么是 while 而不是 if ? 问:什么时候用 notifyAll 或者 notify? 问:为什么是 while 而不是 if ? 大多数人都知道...
  • Java中的无限循环

    2021-03-15 17:54:54
    Java中的无限循环在Java中查看下面的无限while循环。 它会导致它下面的语句编译时错误。while(true) { System.out.println("inside while"); } System.out.println("while terminated"); //Unreachable statement - ...
  • 大致含义关键字含义abstract表明类或者成员方法具有抽象属性assert断言,用来进行程序调试boolean基本数据类型之一,布尔类型break提前跳出一个块byte基本数据类型之一,字节类型case用switch语句之,表示其中的...
  • java中next是什么意思

    千次阅读 2021-03-14 04:00:37
    集合类是放在java.util.*;这个包里。集合类存放的都是对象的引用,而非对象本身,为了说起来方便些,我们称集合的对象就是指集合对象的引用(reference)。引用的概念大家不会忘了吧,前边我们讲数据类型时讲的...
  • 所以我一直努力理解一个算法,并且我互联网上...这部分特别:什么是C++的scanf,memset和一对夫妇在Java中含义?int m, i, j, len;char temp[50];char stuff[100][100];while(scanf("%d",&m)!=EOF){whil...
  • 这种情况下,使用break ,来阻止你毫无意义循环循环。例String item; for(int x = 0; x < 10; x++) { // Linear search. if(array[x].equals("Item I am looking for")) { //you've found t...
  • 我第一次看到这个关键字,我想知道是否有人可以向我解释它的作用...continue终止当前迭代循环代码的其余处理,但继续循环。休息和继续的好例子,我认为它是相同的>。<不可能不是一个不错的完美500! +1没有...
  • 循环结构知识点本章技能目标1理解循环的含义2会使用while循环3会使用do-while循环4会使用调试解决简单的程序错误一、 循环的含义循环就是重复的做……(Java程序的循环结构有三种实现方式:while循环结构、do-while...
  • 使用Java.NET.ServerSocket能够方便的创建一个服务端套接字,这个类的构造函数有一个参数backlog。下面这段代码,本机的8888端口上建立了一个套接字,backlog设置为5。// port:8888,backlog:5ServerSocket server ...
  • Java中分割字符串

    2021-03-16 00:41:33
    java.lang.String的split()方法, JDK 1.4 or laterpublicString[]split(Stringregex,int limit)示例代码public classStringSplit {public static voidmain(String[] args) {String sourceStr = "1,2,3,4,5";...
  • 问题任何人都可以向我解释一下474772436类定义的toString()方法的概念吗?它是如何使用的,它的目的是什么?#1 热门回答(77 赞)返回对象的字符串表示形式。通常,toString方法返回一个"文本表示"此对象的字符串...
  • I have seen member variables given a private modifier and then using getter/setter methods just to ... So, it's all about encapsulating some logic while still preserving interface for... future proofing.
  • Java中break的第三种用法说明

    千次阅读 2021-02-25 18:35:22
    在Java中,break语句有三种用法,第一种是用于终止switch语句的语句序列,第二种是用于退出循环,然而第三种是用作goto语句的“文明”形式!我们知道,goto语句会破坏程序的结构,所以我们一般不会去使用这种功能...
  • 前言: 初学java,实现99乘法表是必学必会的内容。需求 : 分别写出上下左右,对应四个角的乘法表。思路: 可以先打印出*星星,形成一个直角三角形,然后再替换成乘法公式。代码如下:public class Demo {public static void...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 173,025
精华内容 69,210
关键字:

while在java中的含义

java 订阅