首页 > 后端开发 > 正文

java中的for循环分析结果不准确是什么原因?

2024-04-23 06:27:39 | 我爱编程网

今天我爱编程网小编整理了java中的for循环分析结果不准确是什么原因?相关内容,希望能帮助到大家,一起来看下吧。

本文目录一览:

java中的for循环分析结果不准确是什么原因?

java程序,运行结果与想象的不一样

实例化Integer涉及到整型数的自动拆装箱,在进行自动拆装箱时,编译器会使用Integer.valueof()来创建Integer实例我爱编程网

Integer.valueof()的源代码:

public static Integer valueOf(int i) {

assert IntegerCache.high >= 127;

if (i >= IntegerCache.low && i <= IntegerCache.high)

return IntegerCache.cache[i + (-IntegerCache.low)];

return new Integer(i);

}

简单地解释这段代码,就是如果传入的int在IntegerCache.low和IntegerCache.high之间,那就尝试看前面的缓存中有没有打过包的相同的值,如果有就直接返回,否则就创建一个Integer实例。IntegerCache.low 默认是-128;IntegerCache.high默认是127.

所以当你的Integer值>-128 <127时 实例化的两个值是处于同一缓存位置,但超过这个范围,实例化的两个值就是两个不同的位置

而 == 的比较 只有等号两边的值为同一值.也就是在内存中是同一个 才会返回true 所以你要想比较两个值大小是否相等的话,需要使用.equals

java中的for循环分析结果不准确是什么原因?

java中的for循环分析结果不准确是什么原因?

一、 原因:是因为分析已达到了文件结尾,一般是括号没有闭合的,或者是缺少了分号。如图;

二、解决方案

1、可以手工查看括号的闭合情况;

2、也可以使用带自动对齐功能的编辑器如eclipse,notepad++来进行分析;

3、建议平时编程时需要多注意积累错误的经验,而且语法错误不应当耗费太多的时间。

java中的for循环分析结果不准确是什么原因?

java中一样的代码,为什么运行结果不一样?

图一第11行,

for循环

中的i使用的是静态成员变量。

图二第7行,for循环中的i使用的是局部变量。

静态成员变量我个人理解是类的一个固有属性,一般只有

常量

才会定义成静态成员变量,定义为变量就会发生图一的情况:类的实例1和实例2都操作了静态成员变量i,导致实例2在取i的初始值时,收到了实例1的影响。

而图二中因为for循环使用的是局部变量i,类的静态成员变量i的值没有收到for循环的影响。至于为啥实例2的t2.i变成了61,是因为第22行有个t1.i++的操作,使静态成员变量的值加了1。

所以除非是定义常量或者静态方法,一般不要使用static修饰符

你还可以试下i去掉static修饰符,运行结果可能又不一样了

以上就是java中的for循环分析结果不准确是什么原因?全部内容,更多相关信息,敬请关注我爱编程网。
与“java中的for循环分析结果不准确是什么原因?”相关推荐