jjzjj

unboxing

全部标签

c# - Box 和 Unbox 是什么意思?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:WhydoweneedboxingandunboxinginC#?Whatisboxingandunboxingandwhatarethetradeoffs?在C#中,“装箱和拆箱”是什么意思?这是我在其中找到文本的MSDN的摘录。Butthisconveniencecomesatacost.AnyreferenceorvaluetypethatisaddedtoanArrayListisimplicitlyupcasttoObject.Iftheitemsarevaluetypes,theymustbeb

c# - 盒装值类型比较

我在这里试图实现的是盒装原始类型的直接值比较。((object)12).Equals((object)12);//Typematchwillresultinavaluecomparison,((object)12).Equals((object)12d);//butatypemismatchwillnot.(false)object.Equals((object)12,(object)12d);//Samehere.(false)我理解“为什么”。我只是看不到“如何”。类型直到运行时都是未知的,它们可以是来自数据源的任何原始类型。这包括字符串、日期时间、bool值等。我已经沿着丑陋的路

c# - 使用 out 和 ref 参数时的装箱和拆箱

当方法接受ValueType的out/ref参数时是否会发生装箱/拆箱? 最佳答案 对于ref关键字它已经在MSDN上提到了那:Donotconfusetheconceptofpassingbyreferencewiththeconceptofreferencetypes.Thetwoconceptsarenotthesame.Amethodparametercanbemodifiedbyrefregardlessofwhetheritisavaluetypeorareferencetype.Thereisnoboxingofava

java - 如果包装器使用拆箱,需要什么 intValue() 方法?

例如,看这段代码:IntegermyInt=newInteger(5);inti1=myInt.intValue();inti2=myInt;System.out.println(i1);System.out.println(i2);如您所见,我有两种方法可以将整数值从包装器复制到基元:我可以使用unboxing,或我可以使用方法Integer#intValue().既然已经开箱了,还需要什么方法呢? 最佳答案 在Java5中引入了拆箱功能.包装器(包括此方法)自originalrelease以来一直存在.Javadoc的链接那时候

java - 当我使用三元运算符时抛出 NullPointerException

这个问题在这里已经有了答案:NullPointerExceptionthroughauto-boxing-behaviorofJavaternaryoperator(3个答案)关闭7年前。我有以下返回语句:publicBooleanfoo(StringbooleanString){return("true".equals(booleanString)?true:("false".equals(booleanString)?false:null));}当booleanString不等于true且不等于false时,我得到了NullPointerException。是装箱/拆箱问题吗?

java - 为什么 Java 中的自动装箱允许我有 3 个可能的 boolean 值?

引用:http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html"Ifyourprogramtriestoautounboxnull,itwillthrowaNullPointerException."如果您尝试将null分配给boolean值,javac会给您一个编译时错误。说得通。不过,将null分配给boolean值是可以的。我想也是有道理的。但是让我们考虑一下这样一个事实,即当您尝试对null进行自动拆箱时,您会得到一个NPE。这意味着如果不进行空值检查或异常处理,您就无法安全地对boolean值执行bo

Java 自动拆箱 - 是否有编译器警告?

我是Java自动装箱的忠实拥护者,因为它可以节省大量丑陋的样板代码。但是,我发现在Number对象可能为null的某些情况下,自动拆箱会造成混淆。有什么方法可以检测带有javac警告的代码库中发生自动拆箱的位置吗?任何其他仅检测拆箱事件的解决方案(例如FindBugs或特定于Eclipse的编译器警告)将不胜感激,因为我找不到任何解决方案。澄清一下,我不希望在装箱时生成任何警告-仅在拆箱时生成。下面是一些可能导致令人困惑的NullPointerExceptions的代码的简单示例:classTest{privateIntegervalue;publicintgetValue(){ret

java - 整数包装器类和 == 运算符 - 在哪里指定行为?

这个问题在这里已经有了答案:Integerwrapperobjectssharethesameinstancesonlywithinthevalue127?[duplicate](5个答案)关闭8年前。Integerinteger1=127;Integerinteger2=127;System.out.println(integer1==integer2);//trueinteger1=128;integer2=128;System.out.println(integer1==integer2);//false我发现它在-128-127范围内返回==(如果是),为什么会有这样的规范?

java - 通过传入单个元素原始数组来避免装箱

我正在使用一个将Object类型作为其输入的接口(interface)。这对我来说很不幸,因为我有原始数据,有时需要通过接口(interface)传入。这当然迫使我装箱。分析显示此区域是代码中的热点。因此,我正在探索使该领域更快的替代方案。我今天的一个想法是预先分配一个静态原始数组,并将原始值存储在其中,然后将数组传递(然后在接口(interface)的实现中,从数组中取出双.我已经写了一些代码来测试这个。对于相当高的值(1000万),我发现数组方法明显更快。随着我增加测试的迭代次数,两者会收敛。我想知道以前是否有人考虑过这种方法,以及是否有任何关于如何很好地进行基准测试的建议。示例代

java - 自动装箱拆箱操作符 (!=) 和 (==) 的区别

这个问题在这里已经有了答案:How!=and==operatorsworkonIntegersinJava?[duplicate](5个答案)关闭8年前。publicclassT1{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubIntegeri1=1000;Integeri2=1000;if(i1!=i2)System.out.println("differentobjects");if(i1.equals(i2))System.out.println("meaningfullyequal");}}O/