java == 的问题(悄悄的来吐槽一下隔壁java,哈哈哈)

正怒月神 2019-06-13 06:02:12
悄悄的来吐槽一下隔壁java,哈哈哈,
开个玩笑,希望隔壁java的童鞋不要介意。
让.net版块的大家乐呵乐呵。。

事情是这样的:

由于我.net 用习惯了。
今天java中判断 Double习惯使用了==判断包装类型。
结果让我有点震惊。
谁来告诉我
两个包装类型
//a==c false,
但是一个包装类型,一个值类型
//a==d true
我本来觉得吧。==号会比较左右两边的类型,选择合适的判断方式。
那按照这样来说,>=和<=又不是按照==的方式去看两边变量类型了?
这里就留给大家讨论了
public class TestUnit implements ITest {

@Test
public void Test1()
{
Double a=1.0d;
Double b=2.0d;
Double c=1.0d;
double d=1.0d;

System.out.println("a>b "+(a>b)); //a>b false
System.out.println("a==b "+(a==b)); //a==b false
System.out.println("a<b "+(a<b)); //a<b true

System.out.println("a==c "+(a==c)); //a==c false
System.out.println("a>=c "+(a>=c)); //a>=c true

System.out.println("a==d "+(a==d)); //a==d true

System.out.println("a.compareTo(c) " +a.compareTo(c));
}
}
...全文
368 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2019-06-14
  • 打赏
  • 举报
回复
引用 13 楼 by_封爱 的回复:
java之神表示不符
对,java不给重载操作符。的确不符。。。。
by_封爱 2019-06-14
  • 打赏
  • 举报
回复
java之神表示不符
正怒月神 2019-06-14
  • 打赏
  • 举报
回复
引用 10 楼 assky124 的回复:
浮点不能直接判等于。 Kotlin了解下,用法和C#一样,兼容Java
这里只是举个例子, 换成decimal或许更明确点
正怒月神 2019-06-14
  • 打赏
  • 举报
回复
引用 8 楼 耗子哭死猫 的回复:
版主还发20分,抠门的都是抠脚大汉
因为穷,哈哈哈
assky124 2019-06-14
  • 打赏
  • 举报
回复
浮点不能直接判等于。 Kotlin了解下,用法和C#一样,兼容Java
  • 打赏
  • 举报
回复
涨见识了
耗子哭死猫 2019-06-14
  • 打赏
  • 举报
回复
版主还发20分,抠门的都是抠脚大汉
OrdinaryCoder 2019-06-14
  • 打赏
  • 举报
回复
引用 5 楼 正怒月神 的回复:
[quote=引用 4 楼 OrdinaryCoder 的回复:]
System.out.println("a>b "+(a>b)); //a>b false 这个没啥问题
System.out.println("a==b "+(a==b)); //a==b false 这个也没啥问题
System.out.println("a<b "+(a<b)); //a<b true 这个也没啥问题

System.out.println("a==c "+(a==c)); //a==c false 这个为啥是false
System.out.println("a>=c "+(a>=c)); //a>=c true 这个没啥问题

System.out.println("a==d "+(a==d)); //a==d true 为啥这个是true 和c比的时候就是false

我没写过java double不是Double的别名吗?

java的Double就是C#的Nullable<double>
而double就是值类型的。
然而在==比较中
java的//a==c false, 因为它认为两边是包装类型,所以比较地址
c#就是true了,而C#的==,会根据两边的类型调整来比较。甚至可空值类型和引用类型使用==的规则也是不同的。
所以我感觉还是C#处理更符合习惯。[/quote]
可能我用C#的原因 我也觉得C#更合理
it_gz_xi 2019-06-14
  • 打赏
  • 举报
回复
正怒月神 2019-06-14
  • 打赏
  • 举报
回复
引用 4 楼 OrdinaryCoder 的回复:
System.out.println("a>b "+(a>b)); //a>b false 这个没啥问题 System.out.println("a==b "+(a==b)); //a==b false 这个也没啥问题 System.out.println("a<b "+(a<b)); //a<b true 这个也没啥问题 System.out.println("a==c "+(a==c)); //a==c false 这个为啥是false System.out.println("a>=c "+(a>=c)); //a>=c true 这个没啥问题 System.out.println("a==d "+(a==d)); //a==d true 为啥这个是true 和c比的时候就是false 我没写过java double不是Double的别名吗?
java的Double就是C#的Nullable<double> 而double就是值类型的。 然而在==比较中 java的//a==c false, 因为它认为两边是包装类型,所以比较地址 c#就是true了,而C#的==,会根据两边的类型调整来比较。甚至可空值类型和引用类型使用==的规则也是不同的。 所以我感觉还是C#处理更符合习惯。
OrdinaryCoder 2019-06-14
  • 打赏
  • 举报
回复
System.out.println("a>b "+(a>b)); //a>b false 这个没啥问题
System.out.println("a==b "+(a==b)); //a==b false 这个也没啥问题
System.out.println("a<b "+(a<b)); //a<b true 这个也没啥问题

System.out.println("a==c "+(a==c)); //a==c false 这个为啥是false
System.out.println("a>=c "+(a>=c)); //a>=c true 这个没啥问题

System.out.println("a==d "+(a==d)); //a==d true 为啥这个是true 和c比的时候就是false

我没写过java double不是Double的别名吗?
正怒月神 2019-06-13
  • 打赏
  • 举报
回复
a==c也是 false,我不小心擦掉了
极客诗人 2019-06-13
  • 打赏
  • 举报
回复
我来节分 提前祝您新年快乐
正怒月神 2019-06-13
  • 打赏
  • 举报
回复
哈哈哈,我发帖的时候, 邀请回复,系统给我推荐了自己。
内容概要:本文系统研究了构网型变流器的正负序阻抗解耦特性及其在弱电网环境下的稳定性表现,重点依托Matlab/Simulink仿真平台,构建了详细的阻抗数学模型,设计了解耦控制策略,并采用小信号扫频法进行频域辨识与稳定性验证。研究深入探讨了构网型变流器与传统跟网型逆变器在正负序阻抗特性上的本质差异,结合虚拟同步发电机(VSG)等先进控制技术,分析其在抑制宽频带振荡、削弱锁相环动态耦合等方面的优越性。文中不仅提供了完整的仿真模型与MATLAB代码实现,还整合了光伏、风电、储能、微电网等多类新能源系统的阻抗建模与稳定性分析资源,形成了一套面向新型电力系统稳定性的综合性技术资料体系,具有较强的科研复现与工程参考价值。; 适合人群:面向具备电力电子、电力系统自动化、新能源并网等专业背景的研究生、高校教师及工程技术人员,特别适用于从事阻抗建模、小干扰稳定性分析、宽频振荡机理研究以及撰写高水平学术论文的科研工作者。; 使用场景及目标:①掌握构网型变流器正负序阻抗建模与扫频辨识的仿真方法;②深入理解VSG等构网型控制在弱电网中提升稳定性的内在机理;③复现顶刊论文中的阻抗分析流程与稳定性判据应用;④利用提供的成熟模型与代码加速科研进程,支撑课题研究与学术成果产出。; 阅读建议:建议结合文中提供的Simulink模型与MATLAB代码,按照“理论建模—仿真搭建—扫频激励—频响提取—Nyquist判据分析”的完整流程进行实践操作,重点关注扫频信号的注入方式、频率范围设置及阻抗曲线的物理意义解读,并参考博士论文复现案例深化对复杂动态耦合问题的理解。

7,776

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧