草庐IT

autoboxing

全部标签

java - NullPointerException 与三元表达式中的自动装箱

运行以下Java代码:booleanb=false;Doubled1=0d;Doubled2=null;Doubled=b?d1.doubleValue():d2;为什么会出现NullPointerException? 最佳答案 条件表达式的返回类型b?d1.doubleValue:d2是double.条件表达式必须有一个返回类型。遵循二进制数字提升规则,d2自动拆箱为double,这会导致NullPointerException当d2==null.来自语言规范,第15.25节:Otherwise,ifthesecondandthi

Java:自动装箱和强制转换有什么区别?

Thisquestion是关于“为什么自动装箱使Java中的某些调用模棱两可?”但是通读答案,有很多关于类型转换的引用资料,我不确定我是否完全理解其中的区别。谁能提供一个简单的解释? 最佳答案 装箱是将原始类型转换为引用类型时,反装箱是相反的。强制转换是当您希望将一种类型视为另一种类型时,在原始类型和引用类型之间,这意味着隐式或显式装箱操作。是否需要显式是一种语言特性。 关于Java:自动装箱和强制转换有什么区别?,我们在StackOverflow上找到一个类似的问题:

Java:自动装箱和强制转换有什么区别?

Thisquestion是关于“为什么自动装箱使Java中的某些调用模棱两可?”但是通读答案,有很多关于类型转换的引用资料,我不确定我是否完全理解其中的区别。谁能提供一个简单的解释? 最佳答案 装箱是将原始类型转换为引用类型时,反装箱是相反的。强制转换是当您希望将一种类型视为另一种类型时,在原始类型和引用类型之间,这意味着隐式或显式装箱操作。是否需要显式是一种语言特性。 关于Java:自动装箱和强制转换有什么区别?,我们在StackOverflow上找到一个类似的问题:

java - 为什么 Java 中不缓存整数?

我知道有similarposts关于这个话题,但他们并没有完全解决我的问题。当你这样做时:Integera=10;Integerb=10;System.out.println("a==b:"+(a==b));这将(显然)在大多数情况下打印true,因为[-128,127]范围内的整数以某种方式被缓存。但是:Integera=newInteger(10);Integerb=newInteger(10);System.out.println("a==b:"+(a==b));将返回false。我知道我要求的是Integer的新实例,但是由于盒装原语在Java中是不可变的,并且机器已经可以做“

java - 为什么 Java 中不缓存整数?

我知道有similarposts关于这个话题,但他们并没有完全解决我的问题。当你这样做时:Integera=10;Integerb=10;System.out.println("a==b:"+(a==b));这将(显然)在大多数情况下打印true,因为[-128,127]范围内的整数以某种方式被缓存。但是:Integera=newInteger(10);Integerb=newInteger(10);System.out.println("a==b:"+(a==b));将返回false。我知道我要求的是Integer的新实例,但是由于盒装原语在Java中是不可变的,并且机器已经可以做“

java - 我创建的类可以自动装箱吗?

有没有办法为我创建的类使用自动装箱?例如,我有Number的这个子类。publicclassUnsignedIntegerextendsNumber{intn;publicUnsignedInteger(intn){if(n>=0)this.n=n;elsethrownewIllegalArgumentException("Onlypositiveintegersaresupported");}}现在,UnsignedIntegeri=newUnsignedInteger(88);工作得很好,但是有什么方法可以编译:UnsignedIntegeri=88;?它不会适合我。提前致谢!

java - 我创建的类可以自动装箱吗?

有没有办法为我创建的类使用自动装箱?例如,我有Number的这个子类。publicclassUnsignedIntegerextendsNumber{intn;publicUnsignedInteger(intn){if(n>=0)this.n=n;elsethrownewIllegalArgumentException("Onlypositiveintegersaresupported");}}现在,UnsignedIntegeri=newUnsignedInteger(88);工作得很好,但是有什么方法可以编译:UnsignedIntegeri=88;?它不会适合我。提前致谢!

java - 整数值比较

我是一个新手Java编码器,我刚刚读取了一个整数类的变量,可以在API中以三种不同的方式描述。我有以下代码:if(count.compareTo(0)){System.out.println(out_table);count++;}这是在一个循环中,只输出out_table。我的目标是弄清楚如何查看整数count>0中的值。我意识到count.compare(0)是正确的方法?还是count.equals(0)?我知道count==0不正确。这是正确的吗?是否有一个值比较运算符,它只是count=0? 最佳答案 要判断一个Integ

java - 整数值比较

我是一个新手Java编码器,我刚刚读取了一个整数类的变量,可以在API中以三种不同的方式描述。我有以下代码:if(count.compareTo(0)){System.out.println(out_table);count++;}这是在一个循环中,只输出out_table。我的目标是弄清楚如何查看整数count>0中的值。我意识到count.compare(0)是正确的方法?还是count.equals(0)?我知道count==0不正确。这是正确的吗?是否有一个值比较运算符,它只是count=0? 最佳答案 要判断一个Integ

java - "a <= b && b <= a && a != b"怎么可能是真的?

这个问题在这里已经有了答案:Howtomakeloopinfinitewith"x=y&&x!=y"?(4个回答)Howcanidefinevariablestomakeaninfinitywhileloopwiththeseconditions?[closed](4个回答)关闭9年前.这是我必须弄清楚它是如何可能的代码。我有一个线索,但我不知道该怎么做。我认为这是关于负数和正数,也许还有变量修饰符。我是初学者,我到处寻找解决方案,但找不到任何可用的东西。问题是:你需要声明和初始化这两个变量。if条件必须为真。代码:if(a感谢您抽出宝贵时间。 最佳答案