主要内容来自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根本不是对象,编译器进行了自动转换,降低了效率。下面的写法才是效率更高的一种写法。
原文地址:https://www.cnblogs.com/siren27/p/9181117.html
时间: 2024-10-11 06:58:23