Jam*_* P. 1 java arrays unboxing
Java 5或更高版本是否对数组应用了某种形式的"装箱"?这个问题浮现在脑海中,因为下面的代码通过一个数组,好像它是一个Iterable.
for( String : args ){
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
数组不是原语.基元是不是对象的东西.只有boolean,char,byte,short,int,long,float和double才是原语.Arrays是具有特殊语法的对象.如果你可以在Java <5中的类型上调用toString(),那么它不是原始的.
所有自动装箱都是将原语转换为/来自期望对象(如ArrayList)的对象.它允许代码如下:
List<Integer> l = new ArrayList<Integer>();
l.add( 7 );
int i = l.get(0);
Run Code Online (Sandbox Code Playgroud)
为了做空:
List<Integer> l = new ArrayList<Integer>();
Integer ii = Integer.valueOf( 7 )
l.add( ii );
int i = l.get(0).getIntValue();
Run Code Online (Sandbox Code Playgroud)
这都是自动装箱.由于String已经是一个对象(并且不像C中那样等效于char []),因此没有任何内容可以将/ unbox String转换为.
编辑:添加了布尔值,如上所述