我想使用if条件比较两个Long对象的值。当这些值小于128时,if条件正常工作,但当它们大于或等于128时,比较失败。例子:Longnum1=127;Longnum2=127;if(num1==num2){//Worksok}上面的代码比较正常,但是下面的代码比较失败:Longnum1=128;Longnum2=128;if(num1==num2){//DoesNOTwork}为什么比较大于127的Long变量会出现问题?如果将变量数据类型更改为长原语,则比较适用于所有情况。 最佳答案 TL;DRJava缓存从-128到127的盒
从Java5开始,我们对原始类型进行了装箱/拆箱,以便将int包装为java.lang.Integer,依此类推.我最近看到很多使用int而不是java.lang.Integer,虽然使用后者更方便,因为它有一些帮助方法来转换为long值等。为什么有些仍然在Java中使用原始类型?有什么实实在在的好处吗? 最佳答案 在JoshuaBloch的EffectiveJava,第5项:“避免创建不必要的对象”,他发布了以下代码示例:publicstaticvoidmain(String[]args){Longsum=0L;//usesLon
从Java5开始,我们对原始类型进行了装箱/拆箱,以便将int包装为java.lang.Integer,依此类推.我最近看到很多使用int而不是java.lang.Integer,虽然使用后者更方便,因为它有一些帮助方法来转换为long值等。为什么有些仍然在Java中使用原始类型?有什么实实在在的好处吗? 最佳答案 在JoshuaBloch的EffectiveJava,第5项:“避免创建不必要的对象”,他发布了以下代码示例:publicstaticvoidmain(String[]args){Longsum=0L;//usesLon
让我们看一下以下代码段中的简单Java代码:publicclassMain{privateinttemp(){returntrue?null:0;//Nocompilererror-thecompilerallowsareturnvalueofnull//inamethodsignaturethatreturnsanint.}privateintsame(){if(true){returnnull;//Thesameisnotpossiblewithif,//andcausesacompile-timeerror-incompatibletypes.}else{return0;}}pu
让我们看一下以下代码段中的简单Java代码:publicclassMain{privateinttemp(){returntrue?null:0;//Nocompilererror-thecompilerallowsareturnvalueofnull//inamethodsignaturethatreturnsanint.}privateintsame(){if(true){returnnull;//Thesameisnotpossiblewithif,//andcausesacompile-timeerror-incompatibletypes.}else{return0;}}pu
我知道,如果您将装箱的原始整数与常量进行比较,例如:Integera=4;if(aa将自动被拆箱,并且可以进行比较。但是,当您比较两个装箱的Integers并想要比较相等或小于/大于时会发生什么?Integera=4;Integerb=5;if(a==b)上面的代码会检查它们是否是同一个对象,还是会在这种情况下自动拆箱?怎么样:Integera=4;Integerb=5;if(a? 最佳答案 否,Integer、Long等之间的==将检查引用相等性-即Integerx=...;Integery=...;System.out.prin
我知道,如果您将装箱的原始整数与常量进行比较,例如:Integera=4;if(aa将自动被拆箱,并且可以进行比较。但是,当您比较两个装箱的Integers并想要比较相等或小于/大于时会发生什么?Integera=4;Integerb=5;if(a==b)上面的代码会检查它们是否是同一个对象,还是会在这种情况下自动拆箱?怎么样:Integera=4;Integerb=5;if(a? 最佳答案 否,Integer、Long等之间的==将检查引用相等性-即Integerx=...;Integery=...;System.out.prin