true 即表示为真。因此while(true)

是一个无限循环,因为表达式的值一直为真。为了跳出循环,循环体内部要用break语句来跳出。例如,可以在循环体内部用if来判断,if(x==5)break;用exit也可以跳出,此时表示了函数直接返回​

1、在java网络通讯的程序里原本有一段是这样的:

while(in.readLine()!=null){

String aa=in.readLine();

}

结果发现读取老是错误,后来我试了用下面的方法

while(true){

String aa=in.readLine();

}

结果读取成功!这程序咋一看差不多,我们考虑第一个程序,当程序读到,while(in.readLine()!=null)的时候,程序发生了阻塞,等待读入,如果读入成功,就执行下一个循环,下一个已开始也是阻塞,接着再读入,如此反复。而第二个是一开始就循环,但是读到String

aa=in.readLine()的时候也发生阻塞,也是读入后才发生后面的事情,然后再循环,表明上看好像是一样的,但是结果为什么不一样呢!!!

后来我才弄明白,原来第一个在读到while(in.readLine()!=null)的时候,如果有数据,那么执行String

aa=in,readLine()的时候程序会继续往下读,也就是第一个while里面的读入被抛弃了,如果程序读入的只有是一行的话,那么这行就不会读入!!

2、while(true) ... break 的应用

在程序中,常常有一些无限循环的情况,比如当一个程序没有异常发生的时候,让循环一直执行。比如要计算PI的值,当发生异常的时候终止循环,这时候就需要while(true)

... break 着种结构。这不是新语法,也不算新用法。算得上一种不常见的能解决特殊问题的用法。

下面举例说明,比如要获取控制台输入字符串,然后将获取的字符串打印出来。可以这么写:

import java.io.IOException;

public class ConsoleInput {

public static void main(String[] args) {

int ch;

StringBuffer sb = new StringBuffer();

System.out.print("请您输入一字符串:");

while (true) {

try {

ch = System.in.read();

if (ch == -1

(char) ch == '\n') {

break;

} else if ((char) ch != '\r') {

sb.append((char) ch);

}

} catch (IOException e) {

e.printStackTrace();

}

}

System.out.println("您输入的字符串是:" + sb.toString());

}

}

运行结果:

请您输入一字符串:Hello Java!

您输入的字符串是:Hello Java!

Process finished with exit code 0

while(true) ... break 结构有其等价的格式

for(;;){

//todo:do something

... break;

}

但是这些结构的特点就是死循环,并且当某种条件发生的时候,结束循环。

终止条件是必须的,否则编译会出错。

终止条件可以是一个条件表达式,比如if语句。也可以是一个try...catch的语句块,在异常发生时候,在catch语句中break----终止掉循环。

比如:

public class ConsoleInput {

public static void main(String[] args) {

for(int x=10;;x--){

try{

System.out.println(10/x);

}catch(Exception e){

e.printStackTrace();

break;

}

}

}

}

运行结果:

1

1

1

1

1

2

2

3

5

10

java.lang.ArithmeticException: / by zero

at ConsoleInput.main(ConsoleInput.java:12)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native

Method)

at

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at

com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

Process finished with exit code 0

从上面可以结果可以看出,发生异常也可以作为循环终止条件。​​

http://blog.csdn.net/haiyan2012/article/details/6906047

java while 死循环_java while (true) 死循环相关推荐

  1. while true 死循环判断端口按顺序启动应用

    需求:spring微服务应用启动较慢并且要求一个应用启完才能启第二个应用. 思路:加了个while true 死循环判断端口启动了才启下一个应用. 执行方式:/appupgrade/spring_cl ...

  2. java流程控制图_Java流程控制

    Java流程控制 用户交互Scanner 顺序结构 选择结构 循环结构 break&continue 练习 Scanner对象 通过Scanner类来获取用户的输入 语法 Scanner s ...

  3. java 随机句子_Java基础三(Scanner键盘输入、Random随机数、流程控制语句)

    1.引用类型变量的创建及使用 2.流程控制语句之选择语句 3.流程控制语句之循环语句 4.循环高级 ###01创建引用类型变量公式 * A: 创建引用类型变量公式 * a: 我们要学的Scanner类 ...

  4. java销毁定时器_JAVA中的定时器

    1.自己写while(true)死循环,来判断是否到达执行时间条件 这种实现定时任务的方式,完全是自己写代码实现,放在第一个介绍,是因为它最灵活,完全由自己控制,但是缺点是,只适合小工具类的程序,任务 ...

  5. java俄罗斯方块总结_java写的俄罗斯方块的心得

    1,分析游戏界面,通过游戏界面,抽象出来几种类型 2,定义类型 Cell: 公共特征:行号,列号,图片 共同行为:向左,向右,向下移动,提供JavaBean相关的规范 Tetromino类型,其七种组 ...

  6. 用java的io做一个代码计数器,如何制作Java页面计数器_java

    大庆采油六厂采油工艺研究所 王兵 王波 常常逛WWW的人,一定对许多起始页上的计数器感兴趣.每当你光临某个站点的起始页时,它的计数器就很亲切地告诉你,从某年某月某日开始,你是第几位光临的人.你可能也想 ...

  7. java show过时_Java中show() 方法被那个方法代替了? java编程 显示类中信

    你说的show是swing里的吧,在老版本中Component这个超类确实有show这个方法,而且这个方法也相当有用,使一个窗口可见,并放到最前面.在jdk5.0中阻止了这个方法,普遍用setVisi ...

  8. java hashmap 添加_JAVA—HashMap

    一些关于hashmap的学习笔记 1.HashMap底层实现原理 在JDK1.7中HashMap是以数组加链表的形式组成的,在JDK1.8之后新增了红黑树的组成结构,当链表大于8并且容量大于64时,链 ...

  9. java outer关键字_java中的关键字

    abstract : 表明类或者成员方法具有抽象属性 assert : 断言,用来进行程序调试 boolean :基本数据类型之一,声明布尔类型的关键字 break :提前跳出一个块 byte :基本 ...

  10. java单例模式实例_Java设计模式之单例模式 通俗易懂 超详细 【内含案例】

    单例模式 什么是单例模式 ? 确保程序中一个类只能被实例化一次,实现这种功能就叫单例模式 单例模式的好处是什么 ? 方便控制对象 节省资源减少浪费 怎么实现单例模式 ? 构造私有化 调用静态方法返回实 ...

最新文章

  1. gis属性表怎么导成excel_第022篇:ArcGIS中将属性表直接导出为Excel的方法
  2. 动态调试android, ddmsida
  3. 小米平板2更新bios版本_【军团战争5.25】新版本更新预告第一弹,2级兵3次升级!...
  4. springcloud实践之断路器:Hystrix原理和解构
  5. 人民币小写金额转大写金额
  6. 正月十五元宵节各种设计师需要的PSD分层展板\晚会横幅
  7. es客户端工具_超越 Cookie:当今的客户端数据存储
  8. STM32定时器T2纯软件仿真时间准确,JTAG在线调试查看时间不准的问题
  9. Qt总结二十一:Qt控件一(QWidget)
  10. mysql limit (1-1)10_110,当您知道只有1个结果时,是否将'LIMIT 1'添加到MySQL查询中使它们更快?...
  11. 【渝粤题库】陕西师范大学164105 物流管理学 作业(高起专)
  12. 项目实施工程师的工作
  13. Html中的表格、Table和div,表格页面、员工登记表、Div代码
  14. 如何打开python的终端窗口,python程序窗口怎么打开
  15. ERP财务管理系统有哪些特点
  16. CC2541之串口(转)
  17. MT41K256M16TW-107 AUT:P美光内存颗粒D9TRN
  18. 扒一扒嘀嘀打车的反作弊手段
  19. 计算机类与财经结合,财经类专业计算机基础教学模式分析与探讨
  20. JAVA培训哪里好?

热门文章

  1. 如何用MEGA-X构建进化树
  2. 引流工具GoReplay简介和在猪齿鱼效能平台中的应用
  3. android 朗读tts_如何设置Android以大声朗读您的文本
  4. 正则表达式/Calendar/集合/迭代器
  5. 报错Error configuring application listener of class jdbc.ContextListener 解决办法之一
  6. 2022年茶艺师(初级)考试练习题及模拟考试
  7. html暴风粒子代码,魔兽世界课物品代码及gm指令大全(全部整理自网上).doc
  8. Flutter ListView ListView.build ListView.separated
  9. 多次请求后tomcat网页假死
  10. 百度地图API之根据经纬度查询地址信息(Android)