我了解到Java不是100%OOP语言,这是因为数据类型不是对象.但据我来说,int是一个类型的Integer,并Integer属于Number和Number属于Object.所以java是100%的OOP语言.我对么?
Dav*_*d Z 10
不,int而且Integer是不同的.Integer是一个常规类,如你所知,它是一个子类,Number它本身就是它的子类Object.但这int是一种原始类型.它不是一个类,所以显然不是任何类的子类; 它没有任何方法或属性,int除了声明该类型的变量之外,通常没有任何东西可以用它自己做,例如
int x = 3;
Run Code Online (Sandbox Code Playgroud)
由于int不是类,因此int变量的值不是对象.它们没有方法或属性或属性,除了某些由编译器专门处理的数学运算外,您无法用它们做多少.
请注意,Java编译器(最新版本)将自动插入代码以在必要时将其转换int为an Integer,反之亦然.因此,在编写程序时,它们看起来可能是相同的,但实际上并非如此.例如,如果你写
Integer y = 5;
Run Code Online (Sandbox Code Playgroud)
javac 把它翻译成
Integer y = Integer.valueOf(5);
Run Code Online (Sandbox Code Playgroud)
要么
Map<Integer,Integer> m = ...;
m.put(4, 8);
int z = m.get(4);
Run Code Online (Sandbox Code Playgroud)
变
Map<Integer,Integer> m = ...;
m.put(Integer.valueOf(4), Integer.valueOf(8));
int z = m.get(Integer.valueOf(4)).intValue();
Run Code Online (Sandbox Code Playgroud)