先从其他说起,编程语言一般有四种基本成分组成:数据成分、运算成分、控制成分、传输成分。
对于Java语言,数据成分包括基本数据类型和复合数据类型。基本数据类型有8种boolean, byte, char, short, int, long, float和double。而复合数据类型包括类、接口、数组类型等。
对于基本数据类型,我有以下两种理解:
1. 面向对象的基本思想之一是将各种数据都封装成一个个的类(广义上的类),包括上面提到的基本数据类型、类、接口等,之所以在Java语言中又进一步细化,是为了编程设计的需要。但是在某些情况下,仍然可能为他们提供一些一致性的处理,比如获得它们各自对应的Class实例,如void.class,int.class,Object.class,Comparable.class等
2. 我们知道Class实例是引用(指向)内存中的一段字节码,这些字节码实际上是通过类加载器加载到内存中的,这些字节码的类型包括Java类、Java接口、Java数组的字节码;实际上8中基本数据类型和一个伪类型(pseudo-type)void也是通过类加载器加载到内存中的,也是对应内存中的一段字节码,所以必然存在这样的方式去取得这些字节码,如int.class,void.class等
言归正传,Integer是int的一个包装类,它有唯一的一个属性保存有一个int值,并且提供了int处理的一些方法,如String到int,int到String,还有其他转型处理等等。至于int.class和Integer.class,它们是两种不同类型的Class实例,没多大关系。而一个基本数据类型是一个类吗?它是一个广义的类,因为任何数据类型都可以认为是一个类,但不是Java语言规范中的类。
|