从C到Java,从过程到对象之二
数据类型的区别:
Java的数据类型分两大类:基本类型,引用类型
基本类型共有8种:
(a)其中整型数据类型占4种:byte,short,int,long
(b)小数类型2种:float,double
(c)布尔类型:boolean
(d)字符类型:char
引用类型:所有由类定义的变量,都是引用类型
OK,在Java中就这些数据类型。没有了C语言中的:unsigned,long long,而且bool变成了boolean.
在C语言中,当我们谈到数值类型时,很自然的想到是它的取值范围,占的字节数,是有符号类型还是无符号类型.
而且还得看CPU的ALU是多少位的,才能决定。因此在C世界中,为了让你的代码能更容易的移植,得弄个头文件,typedef一下基类型 .
在Java中,由于没有了unsigned,所以数值类型的取值范围,都是由负2的(n-1)次方到正2的(n-1)次方减1这个范围.n是该类型所占的位数.
比如一个字节8位,它的取值范置是:—2的(7)次方到2的(7)次方减1.即(-128)~(127).没有从0-255这种情况。
在Java中,每一个基本类型都有一个封装类,它们是:
| 基本数据类型 | 封装类 | 基本数据类型 | 封装类 |
| byte | Byte | double | Double |
| short | Short | float | Float |
| char | Character | long | Long |
| int | Integer | boolean | Boolean |
如果你用这些封装类型定义了一个对象,那么这个对象有一个常量成员MAX_VALUE,表达该类型的最大值,还有一个常量成员值MIN_VALUE,表达该类型的最小值.
引用它们的方法,和C语言中,结构体变量引用成员变量一样。
对象名.MAX_VALUE 和 对象名.MIN_VALUE 。
当要给float类型的数据赋值时,要加一个f在数后面, 比如:float value = 1.5f;如果写在 float value = 1.5;
编译器认为1.5是double类型,而不是float类型 。
假如我们要表达的数值超过了,基本数据类型取值范围,怎么做呢,麻烦吗?想一下吧,假设Java中没有提供现成的解决方案,你将如何做才能实现它。
OK,你只要稍许想一想即可,去下载一个JDK——API文档来看看BigDecimal这个类吧.看Java是如何做的,为什么这么做。
在Java中有个叫拆箱和装箱操作。注意这个术语是比喻出来的.实际上是基本数据类型变量,与封装类的对象之间的,互相赋值操作.
浙公网安备 33010602011771号