`

让人崩溃的代码,无法预测的结果

    博客分类:
  • Java
阅读更多
Integer color = null;
int white = 255 * 255 * 255;
color = false ? white : color;


你猜结果会是怎样呢?
运行一下看看吧,结果是否让人崩溃?

Integer color1 = 1000;
int color2 = 1000;
if(color1 == color2) {
    System.out.printeln("你没有疯。");
}

if(color2 == color1) {
    System.out.println("你很正常。");
}


上面代码结果又如何呢?
你真的能相信Java吗?无冕之王真的比草根语言严谨吗?
0
0
分享到:
评论
4 楼 yearn20m 2010-08-27  
PS:上个回复写错了点,
Integer color1 = 1000; 

应是
Integer color1 = null; 


靠 JE 不允许编辑评论啊
3 楼 yearn20m 2010-08-27  
这些都是java的自动装箱拆箱造成的
http://stackoverflow.com/questions/2615498/java-conditional-operator-result-type

color = false ? white : color; 

写成
color = false ? color : white;

就不会有问题

==========
当进行数值比较时,如果其中有操作数,都将被自动拆箱
所以改成
Integer color1 = 1000; 

那么后边的比较就会出问题

参见JSL(java语言规范)
15.21 Equality Operators
引用
If the operands of an equality operator are both of numeric type, or one is of
numeric type and the other is convertible (§5.1.8) to numeric type, binary numeric
promotion is performed on the operands (§5.6.2).


==========
参考资料:
JSL
§5.1.8
§5.6.2
§15.21
§15.25

2 楼 小白·菜 2010-03-15  
xwkp2008 写道
理解了Integer和int的区别后你就不会觉的崩溃了

您应该没有亲手尝试一下上面的例子,结果肯定跟你想象的不一样。
1 楼 xwkp2008 2009-08-13  
理解了Integer和int的区别后你就不会觉的崩溃了

相关推荐

    AI代码生成、补全、分析、重构和调试.txt

    AI代码调试工具可以分析程序崩溃的现场数据、日志文件等信息,从而提供错误发生位置的线索,辅助开发者快速定位和解决问题。 在了解这些知识点的同时,可以参考提供的链接***,该网站可能提供了上述功能的平台或者...

    C++五子棋人机对战代码

    10. **错误处理**:良好的代码应该包含错误处理机制,防止非法输入或其他异常情况导致程序崩溃。 以上就是基于C++实现五子棋人机对战代码中涉及的主要技术点。通过学习和理解这段代码,开发者不仅可以掌握C++编程,...

    C#写的五子棋源代码

    为了让玩家能够回溯或观察棋局发展,源代码会包含一个历史记录系统。每次落子后,棋局的状态(包括棋盘布局和当前玩家)会被保存到一个记录列表中。通过遍历这个列表,可以实现“悔棋”或展示每步棋的过程。 四、...

    某Delphi个人理财软件源代码..rar

    8. 错误处理和日志记录:良好的软件应该能够处理异常情况,源代码中会包含错误处理代码,以防止程序崩溃,并记录错误信息以供调试。 通过研究这个Delphi个人理财软件的源代码,开发者可以学习到如何在Delphi环境中...

    Java 国际象棋游戏程序和源代码

    这些算法可以帮助计算机模拟对手的可能走法,预测结果并选择最佳策略。AI的难度可以通过调整搜索深度、评估函数等参数来控制。 5. **多线程**:为了提高用户体验,游戏可能使用多线程技术,让AI思考和用户操作同时...

    软件缺陷预测摘要引言总集1

    Gyimothy等人比较了多种方法,试图找到最优化的代码静态属性组合。 在实际应用中,软件缺陷预测不仅有助于减少测试成本,还能提升软件质量。因为修复缺陷的代价随着开发阶段的推进而显著增加,因此尽早发现和解决...

    猜拳游戏代码(完善版)

    这个游戏的核心是实现人机交互,通过控制台进行操作,玩家与计算机进行石头、剪刀、布的猜拳游戏。下面将详细解析这个游戏的实现原理和关键知识点。 1. **基础语法与数据类型** 在Java中,程序的基本结构由类...

    一个黑白棋的游戏程序的源代码

    6. **错误检测与异常处理**:为了确保游戏的稳定运行,源代码会包含错误检测和异常处理机制,防止用户非法操作或程序内部错误导致游戏崩溃。 7. **游戏记录与回放**:一些程序可能还支持保存和加载游戏记录,方便...

    易语言手机预测游戏源码.zip易语言项目例子源码下载

    总之,"易语言手机预测游戏源码.zip"是一个宝贵的教育资源,它涵盖了易语言编程、游戏开发、用户交互等多个方面,对于想要提升编程技能或者初次接触易语言的人来说,是一个不可多得的学习资源。通过深入学习和实践,...

    建筑工程预算源代码

    7. **错误处理与调试**:源码中会有错误处理机制,以防止因数据异常或程序错误导致的系统崩溃,并提供调试工具帮助开发者找出并修复问题。 建筑工程预算源码的开发和维护需要对建筑行业有深入的理解,同时精通编程...

    五子棋+源代码.rar

    源代码中可能会看到这些算法的实现,通过评估棋局状态和预测对手的走法来决定AI的下一步。 5. **图形用户界面(GUI)** GUI是游戏的外观,它决定了用户如何与游戏进行交互。五子棋游戏的GUI通常包含棋盘显示、按钮...

    j2me手机版五子棋代码

    这些算法模拟对手的所有可能走法,预测每一步的结果,选择最优策略。 5. **事件处理** J2ME的`Command`对象用于处理用户交互,如开始新游戏、查看规则等。通过监听`CommandListener`,我们可以捕捉用户触发的事件...

    C++游戏源码 精彩算命小游戏

    4. 控制结构:if-else语句用于根据用户输入或游戏状态执行不同分支的代码,可能用来判断用户的输入是否合法,或者根据随机数预测结果。 5. 随机数:为了增加游戏的趣味性,开发者可能会使用`<cstdlib>`库中的`rand...

    银行家算法 课设报告和源代码

    设计目的则是让学生理解和掌握银行家算法的工作原理,并能实际编写代码实现这一算法。 3. **设计意义**:银行家算法的学习和实现有助于提升学生的系统设计能力,理解资源管理的重要性,为将来在操作系统或其他...

    易语言生男生女预测源码-易语言

    易语言生男生女预测源码是一款基于易语言编程开发的游戏娱乐软件源代码,主要用于根据一定的算法预测胎儿性别。易语言是中国本土开发的一种编程语言,它以其直观、易学的特点,深受初学者和业余爱好者的喜爱。这个...

    SA-MP-RemoveBuilding-Crashfix.:修复了在服务器上重新连接时臭名昭著的崩溃,其中包含许多移除建筑

    《SA-MP-RemoveBuilding-Crashfix:解决C++编程中的服务器崩溃问题》 SA-MP(San Andreas Multiplayer)是一款基于Rockstar Games的《侠盗猎车手:圣安地列斯》的多人游戏模组,允许玩家在同一个世界中进行线上互动...

    自己动手写操作系统(含源代码).part2

    第三,实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中,而结果有时相当令人气馁。我自己也气馁过,所以我在第二...

    自己动手写操作系统(含源代码).part1

    第三,实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中,而结果有时相当令人气馁。我自己也气馁过,所以我在第二...

Global site tag (gtag.js) - Google Analytics