现在的位置: 首页 > 综合 > 正文

Java中的几个重要的数据类型

2013年10月14日 ⁄ 综合 ⁄ 共 1259字 ⁄ 字号 评论关闭

1.一些基本类型,像int,char这些类型(小的,简单的变量),为了方便,Java并没有把他们也创建到堆中,而是放在了堆栈中,可以高效的存取

主类型

大小

最小值

最大值

封装器类型

boolean

1-bit



Boolean

char

16-bit

Unicode 0

Unicode 216- 1

Character

byte

8-bit

-128

+127

Byte

short

16-bit

-215

+215 – 1

Short1

int

32-bit

-231

+231 – 1

Integer

long

64-bit

-263

+263 – 1

Long

float

32-bit

IEEE754

IEEE754

Float

double

64-bit

IEEE754

IEEE754

Double

void




Void1

Java的基本数据类型与机器无关,这点与C++不同,由于这个特性,Java的可移植性比C++强很多,号称一次编译,到处运行(呵呵,有点牛吧)

讲讲封装器类型的好处:

2.高精度数字
Java 1.1增加了两个类,用于进行高精度的计算:BigInteger和BigDecimal。尽管它们大致可以划分为“封装器”类型,但两者都没有对应的“主类型”。
这两个类都有自己特殊的“方法”,对应于我们针对主类型执行的操作。也就是说,能对int或float做的事情,对BigInteger和BigDecimal一样可以做。只是必须使用方法调用,不能使用运算符。此外,由于牵涉更多,所以运算速度会慢一些。我们牺牲了速度,但换来了精度。
BigInteger支持任意精度的整数。也就是说,我们可精确表示任意大小的整数值,同时在运算过程中不会丢失任何信息。
BigDecimal支持任意精度的定点数字。例如,可用它进行精确的币值计算

3.Java的数组

使用C++的可能对里面的数组越界的问题比较愤怒吧,往往编译器跳出来的内存错误很多是数组越界的问题;

Java可以保证被初始化,而且不可在它的范围之外访问(Java程序员应该感到庆幸了)。由于系统自动进行范围检查,所以必然要付出一些代价:针对每个数组,以及在运行期间对索引的校验,都会造成少量的内存开销。但由此换回的是更高的安全性,以及更高的工作效率。为此付出少许代价是值得的。
创建对象数组时,实际创建的是一个句柄数组。而且每个句柄都会自动初始化成一个特殊值,并带有自己的关键字:null(空)。一旦Java看到null,就知道该句柄并未指向一个对象。正式使用前,必须为每个句柄都分配一个对象。若试图使用依然为null的一个句柄,就会在运行期报告问题。因此,典型的数组错误在Java里就得到了避免

4.自定义的类
class ATypeName {/*类主体置于这里}
这样就引入了一种新类型,接下来便可用new创建这种类型的一个新对象:
ATypeName a = new ATypeName();
在ATypeName里,类主体只由一条注释构成(星号和斜杠以及其中的内容,本章后面还会详细讲述),所以并不能对它做太多的事情。事实上,除非为其定义了某些方法,否则根本不能指示它做任何事情

抱歉!评论已关闭.