1.概念:
- 在程序设计中经常用到的一系列类型,他们被特殊对待。
2.为什么会有基本类型,存储位置
- 因为用new将对象存储在“堆”里,所以用new创建一个对象——特别小的/简单的变量,往往不是很有效。因此
,java采用与c和c++相同的方法。 - 不用new创建变量,而是创建一个“并非是引用”的“自动”变量。这个变量直接存储“值”,并置于堆栈中,因此更高效。
3.主数据类型的大小和名称。
- 基本型别
大小 最小值 最大值 包装器类型 示例 boolean ----- ----- ------ Boolean boolean is = false; char 16-bit Unicode 0 Unicode 2^16-1 Character char s ="s"; byte 8-bit -128 +127 Byte byte b = 89; short 16-bit -2^15 +2^15-1 Short short n = 12; int 32-bit -2^31 +2^31-1 Integer int x = 96; long 64-bit -2^63 +2^63-1 Long long l = 3655214 float 32-bit IEEE754 IEEE754 Float float f = 36.2f; double 64-bit IEEE754 IEEE754 Double double d = 36.66 void Void
4.赋值问题
- 如果将每一种类型看作是每一种规格大小的杯子,那么大杯子的东西往小杯子里到会出现溢出情况,
这种情况下大杯子里的数据会丢失一部分,也就是说会溢位。 - 所有的数值类型都有正负号,所以不要去寻找无符号的数值类型。
5.包装器
- 每一种基本类型都都对应一个包装器,使得可以在堆中创建一个非基本对象,用来表示对应的基本类型。
如:Character ch = new Character('x'); - 可以反向转换 char c = ch;
6.高精度数字
- java提供了两个用于高精度计算的类:BigInteger和BigDecimal.
- 二者大体上属于“包装器”范畴,但二者没有对应的基本类型。
- 这两个类包含的方法提供的操作与对基本类型所能执行的操作相似。能作用于inthe float的操作,同样也能作用于他们,但需要调用相应的方法。
- 由于做了许多复杂的操作,运算速度会很慢。
- BigInteger支持任何精度的整数,可以准确的表示任何大小的整数值,而不会丢失信息。
- BigDecimal支持任何精度的定点数。可以进行货币计算等,
7.java中的数组
- java确保数组会被初始化,而且不能再它的范围之外被访问。
- 这种范围检查是以每个数组上少量的内存开销及运行检查为代价的。但由此换来的是安全性和效率的提高是值得的。
- 当创建一个数组对象的时候,实际上就是创建了一个引用数组,例如dog[i] = new Dog(),dog[i]是一个引用;即数组对象中存在的是一组引用,他们指向对象。
- 每一个引用都会被自动的初始化为一个特定值,该值拥有自己的关键字null,如dog[i] = null;,一旦java看到null,就知道这个引用还没有指向特定的对象,
- 基本类型的数组,编译器会将这种数组所占的内存全部置为0.