草庐IT

autoboxing

全部标签

java - 使用字符与字符数组进行初始化

这会打印出falseListvowelsList=Arrays.asList(newchar[]{'a','e','i','o','u'});System.out.println(vowelsList.contains('a'));//false这会打印出trueListvowelsList=Arrays.asList(newCharacter[]{'a','e','i','o','u'});System.out.println(vowelsList.contains('a'));//truechar自动装箱为Character,我在char数组初始化器中使用过它。为什么我得到不同的结

原始类型的 java : Understanding Arrays. asList(T...array) 方法

我编写了以下代码并惊讶地看到了输出:Integera=211;intb=211;int[]array={210,211,212};System.out.println(Arrays.asList(array).contains(a));System.out.println(Arrays.asList(array).contains(b));输出:falsefalse我找到了this问题和其他一些与之相关的问题,了解到asList方法不自动装箱的东西。我在eclipsejavadoc预览中检查了返回的类型:我不太理解这种返回类型。int[]是一个对象而不是原始对象,所以很好。我确定我没有

java - 为什么自动装箱/拆箱在这里失败?

在下面的程序中,结果是0.0被认为小于Double.MIN_VALUE。为什么?我们有一个解决方案(仅使用Doubles并使用compareTo),我想了解为什么拆箱在这里失败。importjava.util.Date;importjava.util.Calendar;importjava.math.BigDecimal;publicclassTest{publicstaticvoidmain(String[]args){doublemax=99999.9999;doublemin=Double.MIN_VALUE;Doubletest=0.0;System.out.println(m

java - 在 Java 中将 String 转换为 Long 的正确方法

这个问题在这里已经有了答案:HowtoconvertStringtolonginJava?(10个答案)关闭6年前。在Java中将String转换为Long(对象)的最佳方法是什么。Longa=newLong(str);或Longa=Long.parseLong(str);这里是否有正确的方法,因为两者似乎具有相同级别的可读性,是否可以在第一种方法中添加额外的自动装箱步骤?

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 中的自动装箱?

我正在开发一个不断处理千兆字节数据的程序,主要是原始数据和字符串。我需要避免通过自动装箱将原语转换为对象,因为这会增加堆大小和GC时间。目前,我在VisualVM中进行更改并运行代码,发现我有数百万个额外的整数、短整型或对象。然后,我将调试器中的代码单步执行到我的库和JDK类中,以查找装箱发生的位置。有没有工具可以帮助解决这个问题?我使用Intellij作为我的IDE。在Intellij中,您可以使用检查来查找您自己代码中的自动装箱,但它似乎没有扩展到库代码。为此,请从菜单中选择:Analyzye>>按名称运行检查...然后在提示符下输入“auto”。应出现自动装箱检查以供选择。但是,

java - 如何在 Hamcrest 中使用(原始的)自动装箱/加宽?

我遇到了https://code.google.com/p/hamcrest/issues/detail?id=130为Hamcrest匹配器添加一些语法糖。但这个想法被Hamcrest开发人员拒绝了。还有其他聪明的想法可以通过避免在long后面键入L来提高测试的可读性吗?@Testpublicvoidtest1(){intactual=1;assertThat(actual,is(1));}@Testpublicvoidtest2(){longactual=1L;assertThat(actual,is(1));//failsasexpectedisbutresultwas//ass

java - 内存不足错误 : Java heap space when casting a numeric primitive to char

我一直在研究Decorator模式并开发了简单的类ToUpperCaseInputStream。我覆盖了read()方法,因此它可以将所有字符从InputStream转换为大写。该方法的代码如下所示(抛出OutOfMemoryError):@Overridepublicintread()throwsIOException{returnCharacter.toUpperCase((char)super.read());}我后来发现,转换为char是多余的,但这不是重点。当代码出现“java.lang.OutOfMemoryError:Java堆空间”时:((char)super.read

java - 构建检测自动装箱的工具?

有谁知道任何样式检查器或构建工具可以标记构建服务器的自动装箱和拆箱?我已经有了eclipse选项来标记它,但并不是项目中的每个人都使用相同的IDE或相同的设置。在构建端找到它似乎是检测它可能潜入项目何处的唯一方法。 最佳答案 Findbugs将识别许多specificcases可能有问题的拳击问题。我直接链接到一个示例,但如果您在该页面中按Ctrl-F键选择“框”,您会很容易找到其余部分。我认为寻找具体的拳击问题比对所有事情进行全面标记要好。(换句话说,我同意280Z28) 关于java

Java 允许将字节分配给 java.lang.Short 但不允许分配给 java.lang.Integer

finalbyteb=12;Shorts=b;Integeri=b;程序对Short编译良好,但对Integer编译失败并显示“不兼容类型”消息。我很难理解这种行为。对于这个特定场景,我找不到任何东西。 最佳答案 我试图用更广泛的分配上下文组来复制它:finalbyteb=12;Byteb2=b;Characterc=b;//Onlyanerrorifbisn'tfinalcharc2=b;//Onlyanerrorifbisn'tfinalShorts=b;//Onlyanerrorifbisn'tfinalshorts2=b;I