菜鸟自学求教while int =100;while(n>100);编译后不报错 那为什么 for(;;){};编译后就会报错呢 不都相当于while(true)的循环吗 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以下两个都不报错。1) int n=100; while(n>100); //LZ的括号是中文的 2) for( ;;){ } int =100;while(n>100);这种不报错是因为 while里面的限定词不是直接用true。for( ;;){ }这种报错是因为,这已经标志的是死循环,所以后面的代码执行不到,会报错。除非有退出标志,比如break,return等语句。public class Test { public static void main(String[] args) { int n = 100; while(n>100);//换成true 一样报错。 String hello = "hello"; for( ;;){ break; //加break就不会报错。 } String hello1 = "hello"; }} 为什么限定词不直接用true就不会报错呢 因为n是变量,所以变量的值不是固定的。换成常量一样报错。final int n = 100; 这个代码 中 public static void main(String []args){ int n=100; while(n>100); Sysytem.out.println(n); }不会出现编译错误 但是把 while换成 for(;;)循环就会在System输出的时候出现编译错误 求教区别 两个不都是死循环吗 Sysytem.out.println(n); 单词打错了吧System int =100;while(n>100)这个就没进入到循环中来。而for(;;){}是个死循环,都没有终止的条件或者break; 你的这个问题很好 我也上机调试了发现 while(true){} 和for(;;){}是等价的 而while(n>99){} 和for(;n>99;){}是一样的我想这个应该和内存有点关系 因为循环里面带了一个变量 导致了程序的不确定性Java运行时 先将变量存在栈里,在运行带n的循环方法时需从栈里把变量取出进行运算 经运算后才发现它是死循环而前一种没有变量 JVM对它可以直接扫描 鉴定它是死循环 后面的代码无法执行 故这种程序不能够结束 所以报错这就好比一个得病的人 前一种是不知道病情,过了一段时间病症发作了才知道而后者是提前知道了病情 所以它要吃药 打针,必须在发作之前治好。说的有些啰嗦 不知道听懂没? for(;;){}这样写是不会报错的。。 奇怪的数组对象输出。 s1 += 1的问题 可变对象与不可变对象? JAVA 类的加载器问题! 关于system.in一个奇怪的问题 请教一下:network profile server是个什么功能的server。了解的请赐教 如何从socket读入一个float型数据?(请进)在线等待 小问题大问题 Java开发工具比较》》》 请问以下程序为啥执行不了,报terminated 例如数组:List<Pet> petList = new ArrayList<Pet>(); 参数是Pet(父类类型)有什么作用呢! 这是什么问题?
1)
int n=100; while(n>100); //LZ的括号是中文的
2)
for( ;;){
}
这种不报错是因为 while里面的限定词不是直接用true。
for( ;;){
}
这种报错是因为,这已经标志的是死循环,所以后面的代码执行不到,会报错。除非有退出标志,比如break,return等语句。public class Test {
public static void main(String[] args) {
int n = 100;
while(n>100);//换成true 一样报错。
String hello = "hello";
for( ;;){
break; //加break就不会报错。
}
String hello1 = "hello";
}
}
换成常量一样报错。final int n = 100;
int n=100;
while(n>100);
Sysytem.out.println(n);
}不会出现编译错误
但是把 while换成 for(;;)循环就会在System输出的时候出现编译错误
求教区别 两个不都是死循环吗
发现
while(true){} 和for(;;){}是等价的
而while(n>99){} 和for(;n>99;){}是一样的
我想这个应该和内存有点关系 因为循环里面带了一个变量 导致了程序的不确定性
Java运行时 先将变量存在栈里,在运行带n的循环方法时需从栈里把变量取出进行运算 经运算后才发现它是死循环
而前一种没有变量 JVM对它可以直接扫描 鉴定它是死循环 后面的代码无法执行 故这种程序不能够结束 所以报错
这就好比一个得病的人 前一种是不知道病情,过了一段时间病症发作了才知道
而后者是提前知道了病情 所以它要吃药 打针,必须在发作之前治好。
说的有些啰嗦 不知道听懂没?
这样写是不会报错的。。