`
0428loveyu
  • 浏览: 28984 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Java数据类型

 
阅读更多

Java语言中,数据类型分为基本类型(primitive)和引用类型两种。注意,这是指在Java语言中,而不是Java虚拟机。在虚拟机内部,数据类型跟Java语言中稍有不同。

如下表:


有一点说明一下,上面的分类标准是根据Java语言规范来的,有些参考书可能不是把char当中整形看待,而是单独列出,请注意理解,建议参看规范。

下面分别介绍:

整型:

整型表示的是没有小数的数值,允许负值。具体内容如下表:



很容易理解。一点说明,这四种类型都是用二进制补码表示的,根据补码的规则就可以算出后面的取值范围。
long类型的需要在后面加个L,例如: long popu = 2000000000L。 如果是用十六进制表示,需要在前面加上0X。

对于char类型,它用2个字节的无符号整数表示,取值为0~65535.对于char类型,尤其要特别注意理解,之所以把char归入整型,是因为他用整数来表示Unicode字符中相应的字符。比如说,整数65对应的unicode字符是A。那么,要表示这个A这个字符,你可以这么声明: char x = 65; 或者 char x = 'A'. 所以其实也可以这么给int类型赋值: int a = 'A'。除此之外,还要关注一下转义字符,如果你的键盘打不出数学中的“π“,那么你可以这么表示 char y = '\u03C0'。除了unicode转义字符之外,还要其他特殊的转义类型,如下:



理解char类型对于理解Java I/O中的writer和reader非常关键。

浮点类型:

包括单精度和双精度,符合IEEE 754规范。如下:



Java中还定义了三个特殊的浮点数值:
  • 正无穷大:用常量 Double.POSITIVE_INFINITY表示
  • 负无穷大:用Double.NEGTIVE_INFINITY表示
  • 不是一个数(NaN):用Double.NaN表示
注意:浮点类型不适合用于金融等对四舍五入敏感的计算中。例如下面代码:
System.out.println(2.0-1.1);

将会输出:0.8999999999999999,而不是0.9. 这是因为二进制系统无法精确地表述分数1/10、这个如十进制无法精确到1/3一样。如果需要计算中不含四舍五入,需要用BigDecimal这个类。

boolean类型:

只要两个字:true和false。需要注意的是,在虚拟机内部虽然也有boolean类型,但是因为虚拟机对boolean类型支持很少。所以在编译的时候,boolean被编译成int或byte类型。虚拟机内部,false由0来表示,true由非零整数表示。注意,boolean数组是当做byte数字访问的。

引用类型:

引用类型有类引用、接口引用和数组类型引用三种。这些类型的数据存储的不是数据本身,而是数据的引用。(在具体实现中可能是指针、地址)




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics