草庐IT

unboxing

全部标签

java - 整数自动拆箱和自动装箱会带来性能问题吗?

我们目前正在使用x++;进行一些迭代和其他操作,其中x是一个Integer而不是int。操作可能会在我们系统上的某些用户操作中重复进行,但不会像数学应用程序那样太复杂或太多,每个用户事务最多可重复10000次。这种拆箱和后来的装箱是否会对我们的性能产生明显的毫秒影响? 最佳答案 http://download.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html“结果列表的性能可能很差,因为它会在每次获取或设置操作时装箱或拆箱。偶尔使用它足够快,但在性能关键的内部使用

java - 相等运算符如何处理原始数据和对象类型数据

我知道这是一个非常基本的问题,但我想弄清楚这个概念。我想知道==运算符在原始类型和对象类型的情况下如何工作。例如Integera=1;intb=1;System.out.println(a==b)如何将a与b进行比较,而a包含包含值1的对象的ref。有人可以向我解释一下如何它在内部工作? 最佳答案 一般来说,Java中的相等运算符执行所谓的浅比较。换句话说,它比较变量包含的值。现在原始数据类型的变量包含值本身,而引用类型包含对存储实际内容的堆区域的引用。这意味着在您的代码片段中intb将保存值1并且Integera将保存堆上实际In

java - Java 中的 (Integer)y 和 new Integer(y) 有什么区别?

以下有什么区别:Integerin=(Integer)y;和Integerin=newInteger(y);我想将int类型转换为Integer类型,反之亦然。这是我的代码:publicclassCompareToDemo{publicstaticvoidmain(String[]args){//Integerx=5;inty=25;System.out.println(y+"thisisintvariable");Integerin=(Integer)y;//Integerin=newInteger(y);if(ininstanceofInteger){System.out.prin

java - java中的方法重载决议

以下是我对java中的重载解析的了解:Theprocessofcompilertryingtoresolvethemethodcallfromgivenoverloadedmethoddefinitionsiscalledoverloadresolution.Ifthecompilercannotfindtheexactmatchitlooksfortheclosestmatchbyusingupcastsonly(downcastsareneverdone).这是一个类:publicclassMyTest{publicstaticvoidmain(String[]args){MyTe

c# - 为什么 'unbox.any' 不像 'castclass' 那样提供有用的异常文本?

为了说明我的问题,请考虑以下简单示例(C#):objectreference=newStringBuilder();objectbox=42;objectunset=null;//CASEONE:badreferenceconversions(CILinstrcution0x74'castclass')try{strings=(string)reference;}catch(InvalidCastExceptionice){Console.WriteLine(ice.Message);//Unabletocastobjectoftype'System.Text.StringBuilde

c# - 为什么 'unbox.any' 不像 'castclass' 那样提供有用的异常文本?

为了说明我的问题,请考虑以下简单示例(C#):objectreference=newStringBuilder();objectbox=42;objectunset=null;//CASEONE:badreferenceconversions(CILinstrcution0x74'castclass')try{strings=(string)reference;}catch(InvalidCastExceptionice){Console.WriteLine(ice.Message);//Unabletocastobjectoftype'System.Text.StringBuilde

c# - 为什么我不能将 int 拆箱为小数?

我有一个IDataRecord阅读器,我正在从中检索小数,如下所示:decimald=(decimal)reader[0];出于某种原因,这会抛出一个无效的强制转换异常,指出“指定的强制转换无效。”当我执行reader[0].GetType()时,它告诉我它是一个Int32。据我所知,这应该不是问题....我已经通过这个运行良好的代码片段对此进行了测试。inti=3750;decimald=(decimal)i;这让我摸不着头脑,想知道为什么它无法将读取器中包含的int拆箱为十进制数。有谁知道为什么会发生这种情况?有什么我遗漏的微妙之处吗? 最佳答案

c# - 为什么我不能将 int 拆箱为小数?

我有一个IDataRecord阅读器,我正在从中检索小数,如下所示:decimald=(decimal)reader[0];出于某种原因,这会抛出一个无效的强制转换异常,指出“指定的强制转换无效。”当我执行reader[0].GetType()时,它告诉我它是一个Int32。据我所知,这应该不是问题....我已经通过这个运行良好的代码片段对此进行了测试。inti=3750;decimald=(decimal)i;这让我摸不着头脑,想知道为什么它无法将读取器中包含的int拆箱为十进制数。有谁知道为什么会发生这种情况?有什么我遗漏的微妙之处吗? 最佳答案

java - 三元运算符在 JDK8 和 JDK10 上的行为差异

考虑下面的代码publicclassJDK10Test{publicstaticvoidmain(String[]args){Doubled=false?1.0:newHashMap().get("1");System.out.println(d);}}在JDK8上运行时,此代码打印null而在JDK10上,此代码导致NullPointerExceptionExceptioninthread"main"java.lang.NullPointerExceptionatJDK10Test.main(JDK10Test.java:5)编译器生成的字节码几乎相同,除了JDK10编译器生成的与自

java - 三元运算符在 JDK8 和 JDK10 上的行为差异

考虑下面的代码publicclassJDK10Test{publicstaticvoidmain(String[]args){Doubled=false?1.0:newHashMap().get("1");System.out.println(d);}}在JDK8上运行时,此代码打印null而在JDK10上,此代码导致NullPointerExceptionExceptioninthread"main"java.lang.NullPointerExceptionatJDK10Test.main(JDK10Test.java:5)编译器生成的字节码几乎相同,除了JDK10编译器生成的与自