浅谈Java中的数据类型

Posted siren27

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈Java中的数据类型相关的知识,希望对你有一定的参考价值。

主要内容来自MIT6.031 Software Construction课程及HIT 软件构造课程。

 

Java的数据类型有两种,分为基本数据类型(primitive types)及对象数据类型(object types)。例如int ,float,boolean等类型就是基本数据类型,而String ,Integer ,BigInteger等类型就是对象数据类型。

下面介绍一下这两点的异同:

基本数据类型都是不可变的(Immutable),而对象数据类型一些是可变的(mutable),一些则不是。基本数据类型存储在栈(Stack)中,而对象数据类型存储在堆(heap)中,由Java的垃圾收集机制管理(garbage collector)。基本数据类型通常不能实现一些复杂的表述,而对象数据类型则可以以泛型的形式表示一些复杂概念。基本数据类型一般来时花费很小,而对象数据类型花费较大。

 

对象数据类型里还有一种由基本数据类型的封装的包装数据类(Boxed primitive),例如 Boolean , Integer,Short,Long,Float。主要是在Collection中使用。一般不要主动去使用包装类,因为这样做的代价很高。需要编译器做出自动转换。

例如:

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);


/////////
list.add(Integer.valueOf(1));
list.add(Integer.valueOf(2));

我们通常会选择第一种写法,但这样其实是一种代价更高的写法。因为1和2根本不是对象,编译器进行了自动转换,降低了效率。下面的写法才是效率更高的一种写法。

以上是关于浅谈Java中的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

浅谈Java中的泛型

浅谈equals和==的区别

浅谈Java中set.map.List的区别

(转) Java中的负数及基本类型的转型详解

(转)java中equals和等号(==)的区别浅谈

Java浅谈数组