首页 > TAG信息列表 > Autoboxing

Java 自动装箱与拆箱(Autoboxing and unboxing)

什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。  一般我们要创建一个类的对象实例的时候,我们会这样:  Class a = new Class(parameter);  当我们创建一个Integer对象时,却可以这样:  Integer i = 100; (注意:不是 int i =

Oracle Java教程-有关字符自动装箱Java注释的可能错误

这个问题已经在这里有了答案:            >            Does autoboxing call valueOf()?                                    4个 我是JAVA的新手,目前正在学习Oracle教程泛型部分.我认为那里有一个错误,我想确保我

在Java中应该避免自动装箱吗?

在某些情况下,方法期望原始类型为double,而您将Double对象作为参数传递. 由于编译器将打开的对象拆箱,这会增加内存使用率还是降低性能?解决方法:这是Java Notes在autoboxing上所说的: Prefer primitive types Use the primitive types where there is no need for objects for two

java – 数字文字的自动装箱:包装器初始化与传递方法参数不一致

请考虑2个案例: //1 Short s = 10; //obviously compiles //2 takeShort(10); //error - int is not applicable //where: static void takeShort(Short s) {} 我假设情况1被编译器更改为: short _temp_s = 10; Short s = Short.valueOf(_temp_s); 你能否解释一下编译器在

java – 比较已装箱的长值127和128

我想使用if条件比较两个Long对象值.当这些值小于128时,if条件正常工作,但当它们大于或等于128时,比较失败. 例: Long num1 = 127; Long num2 = 127; if (num1 == num2) { // Works ok } 上面的代码比较正常,但在下面的代码中失败: Long num1 = 128; Long num2 = 128; if (nu

java – 将null返回为int三元运算符允许的int,而不是if语句

让我们看看以下代码段中的简单Java代码: public class Main { private int temp() { return true ? null : 0; // No compiler error - the compiler allows a return value of null // in a method signature that returns an int. } priva

java – Boxing to Object类型以避免编译失败

参见英文答案 > Why doesn’t autoboxing overrule varargs when using method overloading in Java 7?                                    3个 请考虑以下代码 public class Foo { int value; public Foo (final String str, Object

java – 这是通用的自动装箱吗?

分配值而不使用通常的表示法,例如“this.< Double> getAnything(int flag)” private <T> T getAnything(int flag) { Object o = null; if (flag==0) o=new String("NewString"); else if (flag==1) o=new Double(0D); return (T)o; }

java – 原始流vs对象流和发生的实际装箱

所以我理解你可以有对象流,即Stream< T>.和专家原始流,例如IntStream,DoubleStream等.后者的一个好处是避免自动装箱. 此外,如果我们以IntStream为例,它具有专门的操作,例如接受IntPredicate的过滤器. 我想知道我是否有一个IntStream与一个流< Integer>在这一点上,你节省了拳击,例

java – Autoboxing – 这两行之间的区别?

我想知道这两者之间的区别: Integer I = 30; // is it autoboxing? Integer I = new Integer(30); // I know it is autoboxing 解决方法:它们是有区别的.第一个将被视为 Integer I = Integer.valueOf(30); // autoboxing 它将使用已存储在内部缓存中的Integer对象(当自动装

为什么在Java中从List中删除原始类型时没有Autoboxing?

我有以下代码抛出IndexOutOfBoundsException异常: List<Character> list = new ArrayList<>(); char c = 'a'; list.add(c); list.remove(c); // gets fixed by passing list.remove((Character)c); 我知道发生这种情况是因为在移除时不会发生AutoBoxing,而在添加元素时会发

java – 盒装布尔值的等价

快速提问:是否保证此代码始终显示为真? Boolean b1 = true; Boolean b2 = true; System.out.println(b1 == b2); 拳击布尔似乎总是导致相同的布尔对象,但我找不到太多关于JLS中的盒装布尔相等的信息.相反,它甚至似乎暗示拳击应该创建新对象,甚至可能导致OOM异常. 你的想法是什么?解

java – 取消装箱问题

我有一个扩展LinkedList类的类. 这是代码的摘录: class SortedList<Integer> extends LinkedList<Integer> { int intMethod(Integer integerObject){ return integerObject; } } 这应该返回自动取消装箱的int值.但由于某种原因,编译器抛出一个错误,指出类

Java =运算符

Integer n = 5; System.out.println(n) // 5! 我怎样才能在我的课程中重现这种行为?解决方法:你不能.这称为Autoboxing,它是Java中某些类的一个特殊功能,可以简化处理表示原始类型(如int)的类.

java – Integer.valueOf()的值

是否有任何理由使用Integer.valueOf(X)初始化最终的Integer,如下所示: public class MyClass { public static final Integer DAY_1 = Integer.valueOf(1); // Why do it this way? public static final Integer DAY_2 = 2; // When it can be done this way? } 我知道在添加

在C#中调用值类型的方法时是否隐式完成了装箱?

参见英文答案 > Boxing and unboxing: when does it come up?                                    7个 让我们说我做这样的事情: int x = 5; String s = x.ToString(); 来自Java,我会被认为正在对int值进行自动装箱,使其表现得像一个对象并

在Java中选择具有多个参数的重载方法的规则

我知道在Java中重载规则,但在某些情况下我的直觉不起作用. 我们来看一个例子: public class Overloading { public static void main(String[] args) { long primitive = 3; Long boxed = Long.valueOf(5); doWork(primitive, boxed); //1

Java反射和自动装箱

我正在使用反射设置字段值,但是当我尝试将Short指定为short时,我得到错误,因为isAssignable()返回false. private void setFieldValue(Object result, Field curField, Object value) throws NoSuchFieldException, IllegalAccessException { if (!curField.getType().isAssig

使用java中的基本类型的变量参数重载时的奇怪行为

显然,我对过载,自动装箱和变量参数的工作方式知之甚少. 因此,只要有原始类型的参与,这个程序就会导致麻烦. public static void z(int a, Object...objects){ } public static void z(Object...objects){ } public static void main(String[] args) { z(); // no error

java – arraylist与数组中原始类型的包装器

在“核心java 1”我读过 CAUTION: An ArrayList is far less efficient than an int[] array because each value is separately wrapped inside an object. You would only want to use this construct for small collections when programmer convenience is more

为什么Java autobox int for Integer for .equals(Object)方法?

我正在研究一些java类,并且重写了.equals(Object)方法来测试我的类的整数变量,并且当它发出错误说我无法使用原始类型int时,我很惊讶,当我确定它说在java docs中,编译器会自动将autobox基本类型转换为方法的包装类型. public boolean equals(Object o) { if (!(o instanceof m

java – 整数与int比较

我是java的新手.我现在正在学习java中的非原始Integer类型.我知道以下比较无效并抛出编译错误 – String str = "c"; Char chr = 'c'; if(str == chr) return true; 上面的代码片段给了我 – “Test.java:lineNumber:无法比较的类型:java.lang.String和char”错误. 但是我发现下面

java – autobox原始文字是否有性能成本?

说我有以下代码: Map<String, Boolean> map = ... map.put("foo", true); 从理论上讲,true必须自动装箱,与插入Boolean.TRUE相比,会导致轻微的性能损失.但是由于我们正在处理一个文字值,编译器是否有可能用一个盒装文字替换原始文字,因此没有额外的运行时开销? 在任何人攻击我之前,