Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包装类的自动装箱和装箱_Java - Fatal编程技术网

Java 包装类的自动装箱和装箱

Java 包装类的自动装箱和装箱,java,Java,在包装类中,我们在每个包装类中都有两种类型的方法parseXxx()和valueOf(),用于原语和包装对象之间的相互转换。最近java 1.5引入了自动装箱和装箱。因此,为什么他们不反对这些方法呢。好吧,parseXxx()与装箱完全不同;它将字符串转换为基本对象。另一方面,valueOf()实际上用于装箱——它要么构造一个新的包装器对象,要么从缓存中获取一个现有的包装器对象,具体取决于该值。Java编译器生成对valueOf()的调用,这正是装箱的含义。因为自动装箱和自动取消装箱只是编译时功

在包装类中,我们在每个包装类中都有两种类型的方法parseXxx()和valueOf(),用于原语和包装对象之间的相互转换。最近java 1.5引入了自动装箱和装箱。因此,为什么他们不反对这些方法呢。

好吧,parseXxx()与装箱完全不同;它将字符串转换为基本对象。另一方面,valueOf()实际上用于装箱——它要么构造一个新的包装器对象,要么从缓存中获取一个现有的包装器对象,具体取决于该值。Java编译器生成对valueOf()的调用,这正是装箱的含义。

因为自动装箱和自动取消装箱只是编译时功能。尝试在源文件中编写类似的内容,然后查看反编译代码:

Integer i = 10;
Integer i = Integer.valueOf(10);
反编译代码:

Integer i = 10;
Integer i = Integer.valueOf(10);
同样地

int i = new Integer(100);
将在反编译时为您提供以下信息:

int i = (new Integer(100)).intValue();
因此,JVM在运行时仍然严重依赖于这些方法,尽管在编写代码时它被屏蔽了。


1.有时明确说明某些转换可能有价值(为了清楚起见,例如一些不明显/模糊的情况)。

2.这种弃用不会导致旧程序中充斥着大量弃用警告吗?

因为命令行参数被视为字符串数组,但如果您希望命令行参数不是字符串数据类型(可能是原语),即布尔、int、byte、short、long、float、double,char,然后将参数解析为程序所需的参数,这里使用parseXXX()方法,确切地说,parseXXX方法使用字符串参数并返回您试图解析成的适当数据类型。

Friedman Hill..我们可以通过这种方式判断何时有解装箱java编译器生成对parseXXX()方法的调用。我前面的语句正确吗?不。正如我所说,parseXXX()将字符串转换为包装器对象;取消装箱与字符串无关。取消装箱意味着调用doubleValue()或intValue()或floatValue(),等等。很好,我知道发生了什么。但是小帮助我从未尝试查看反编译代码如何查看它?@sateesh-只需获得一个反编译器,例如,您所要做的就是将生成的.class文件拖放到此文件中。