Java小白踩坑录 - Java中的等价

简介: Java小白踩坑录 - Java中的等价

image.png

数学世界

在数学中,不存在模糊的概念,等号(=)定义了一种真实的数之间的等价关系,满足自反性,传递性,对称性。

自反性:对于所有 x,x = x。也就是说,每个值与其自身存在相等关系 。

传递性:如果 x = y 并且 y = z,那么 x = z。

对称性:如果 x = y,那么 y = x。

Java 世界

Java 中存在 == 用来表示相等的关系,那么它满足自反性,传递性和对称性吗?能否提供一段程序来演示它是否违反了任意性质?

1.自反性的例子

publicstaticvoidmain(String[] args) {
inti=5;
System.out.println("x is int x = x : "+(i==5));
floatf=Float.NaN;
System.out.println("x is float nan x=x :"+(f==Float.NaN));
doubled=Double.NaN;
System.out.println("x is double nan x=x :"+(d==Double.NaN));        
}

输出结果:

xisintx=x : truexisfloatnanx=x :falsexisdoublenanx=x :false

从上面的实例来看,== 不具有自反性。

2.传递性

publicstaticvoidmain(String[] args) {
longx=Long.MAX_VALUE;
doubley= (double) Long.MAX_VALUE;
longz=Long.MAX_VALUE-1;
System.out.println((x==y) +""); // 不精确的!System.out.println((y==z) +""); // 不精确的!System.out.println(x==z); // 精确的!        }

输出结果为:

truetruefalse

传递性有问题。

3.对称性

publicstaticvoidmain(String[] args) {
inti=5,j=5;    
System.out.println("x y is int x = y : "+(i==j));
floatf=0.53f,f1=0.53f;        
System.out.println("x y is float x = y : "+(f==f1));
doubled=0.3836,d1=0.3836;        
System.out.println("x y is double x = y : "+(d==d1));    
}

输出结果为:

x y is int x = y : truex y is float x = y : truex y is double x = y : true

总结

总之,Java 中的 == 使用时要警惕到 float 和 double 类型的拓宽原始类型转换所造成的损失。它们是悄无声息的,但却是致命的。它们会违反你的直觉,并且可以造成非常微妙的错误。

目录
相关文章
VUE.初始化项目报错缺少core-js
VUE.初始化项目报错缺少core-js
262 0
|
11月前
|
传感器 人工智能 大数据
高科技生命体征探测器、情绪感受器以及传感器背后的大数据平台在健康监测、生命体征检测领域的设想与系统构建
本系统由健康传感器、大数据云平台和脑机接口设备组成。传感器内置生命体征感应器、全球无线定位、人脸识别摄像头等,搜集超出现有科学认知的生命体征信息。云平台整合大数据、云计算与AI,处理并传输数据至接收者大脑芯片,实现实时健康监测。脑机接口设备通过先进通讯技术,实现对健康信息的实时感知与反馈,确保身份验证与数据安全。
|
8月前
|
自动驾驶 安全 物联网
5G加持自动驾驶:从“聪明”到“智慧”的进化
5G加持自动驾驶:从“聪明”到“智慧”的进化
218 8
|
9月前
|
存储 安全 测试技术
云计算应该掌握的八种用途
云计算通过互联网提供按需付费的云服务,广泛应用于软件开发、社交网络、大数据分析、数据备份、文件存储、灾难恢复、云端通信和业务流程管理等领域。它帮助企业降低硬件成本、提高开发效率、保障数据安全、增强业务连续性,并支持多样化应用场景,成为数字化转型的核心引擎。
1841 2
|
11月前
|
人工智能 安全 Anolis
|
12月前
|
数据可视化 测试技术 UED
《多模态数据信息提取》解决方案评测报告
1. **部署操作界面**:整体直观,通过点击和拖拽完成配置,但复杂配置环节界面元素密集,需优化布局;部分步骤缺乏提示信息,错误处理不够明确。 2. **部署文档**:表述逻辑清晰,引导准确,但在环境依赖和参数配置上存在不足,建议增加详细列表和示例,补充错误处理章节。 3. **函数应用模板**:简化了部署流程,但部分模板参数说明不清晰,适用场景描述不足,需完善参数说明和适用条件。
《多模态数据信息提取》解决方案评测报告
|
网络协议 Shell 网络安全
解决两个 Android 模拟器之间无法网络通信的问题
让同一个 PC 上运行的两个 Android 模拟器之间能相互通信,出(qiong)差(ren)的智慧。
241 3
|
机器学习/深度学习 边缘计算 人工智能
深入探讨云计算的未来趋势
深入探讨云计算的未来趋势
1290 14
|
消息中间件 Java Kafka
Java微服务架构中的消息总线设计
Java微服务架构中的消息总线设计
|
人机交互 分布式数据库 数据库
软考之决策支持系统的概念
软考之决策支持系统的概念
390 3