itsway,专业的IT网络教程站,让您踏上IT之路,具备IT思维。
  设为首页        加入收藏夹        网站历程

教程总目录:Java教程(上)  Java教程(下)  HTML教程  CSS教程  JavaScript教程

2.2.1 数据类型

现实世界中的数据不仅非常丰富,而且可以大致归为几类。例如,在人们的直觉中,数字和日期就不不同类的数据,因为它们的运算规则不一样。
  例如,“2008年8月16日”和简单的数字“10”显然不一样,数字可以加减乘除,而日期呢?两个日期相加,例如“2008年8月16日”加上“2008年8月15日”是什么?有什么意义?难道是“4016年16月31日”?是否还要经过进一步换算得到一个合法日期?当然,两个日期相减还是有意义的,可以理解为这两个日期的天数之差,例如“2008年8月16日”减去“2008年8月15日”,结果是1,说明它们差1天。但两个日期相乘除,意义就更难理解了。
  再看看表示信息的字符型数据,例如人的姓名或简历。作为字符串,“张三”怎么和“李四”进行四则运算?
  所以,当把现实世界中的这些数据在计算机中表示时,必须把它们事先归类,不同类型的数据,运算规则也不一样。

在Java中,有八大基本数据类型,称为“原数据类型”,它们是由Java语言预先定义的,并由保留字命名。Java的八种原数据类型是:
  1.byte(字节型)。byte数据类型是一个8位(bit)的有符号整数,范围是-128~127。在使用大数组时,为了节约内存,使用byte类型是个好方法。当数值比较小时,byte类型还可以代替int。
  byte是用来处理未经加工的二进制数据的数据类型。
  2.short(短整型)。short类型是一个16位的有符号整数,范围是-32,768~32,767。
  3.int(整型)。int类型是一个32位的有符号整数,范围是-2,147,483,648~2,147,483,647。声明变量为整数时,一般声明为int型,因为在一般情况下它足够大了。除非有某些特殊原因(节约内存,数值范围确实不大等),才会使用short或byte型。当然,如果觉得它的范围还不够大,可以使用long型。
  4.long(长整型)。long类型是一个64位的有符号整数,范围是-9,223,372,036,854,775,808~9,223,372,036,854,775,807。
  5.float(浮点型)。float类型是32位单精度、符合IEEE 754规范的浮点数。对于负数,其范围为-3.402823×1038~-1.401298×10-45;对于正数,其范围为1.401298×10-45到3.402823×1038。因此可以存储带小数的、范围更大的数。但是,此数类型绝不能用于存储精确值,例如货币数量。
  6.double(双精度型)。double类型是64位双精度、符合IEEE 754规范的浮点数。对于负数,其范围为 -1.79769313486232×10308到-4.94065645841247×10-324;对于正数,其范围为4.94065645841247×10-324到1.79769313486232×10308。对于数值型数据,double类型是默认选择。同样,这种数据类型绝不能用于存储精确值。
  7.boolean(布尔型)。boolean型只有两个值:true(真)和false(假)。它是逻辑型数据,在内存中只用1位存储信息。
  8.char(字符型)。char类型是一个单个的16位Unicode字符,最小值是'\u0000'(或0),最大值是'\uffff'(或65,535)。
  Java的char类型比其他语言有较大的改进。C语言等的字符类型是采用ASCII编码,每个书占用8bit的长度,因此一共有256个不同的字符,字符'A'对应的ASCII码是65。这个表示范围太小了,所以Java的char类型采用16位Unicode编码方案,因此一共有65536个不同的字符,处理多语种的能力大大加强。
  这八种数据类型如下表所示。

数据类型关键字占用位数(bit)取值范围
布尔型boolean8true, false
字节型byte8-128~127
字符型char16'\u0000'~'\uffff'
短整型short16-32768~32767
整型int32-2,147,483,648~2,147,483,647
长整型long64-9,223,372,036,854,775,808~9,223,372,036,854,775,807
浮点型float32-3.402823×1038~-1.401298×10-45
1.401298×10-45~3.402823×1038
双精度型double64-1.79769313486232×10308
~-4.94065645841247×10-324
4.94065645841247×10-324
~1.79769313486232×10308

IEEE 754规范是国际上的一个标准规范,它规定了如何用一定位数的比特来存储实数,有兴趣的读者可以好好看看这篇文档:IEEE 754规范

需要说明的是,上面八种数据类型是Java的基本数据类型。Java中还存在一种引用(reference)数据类型。例如,对应基本的double类型,在Java基础类库中还存在着一个类Double,对应基本的char类型,还存在一个类Character。这些类在包含基本数据类型的同时,还包含了一些对该数据类型操作的常用方法,例如把字符串转换成double型数值等。这些以后再讲。

为什么存在两种数据类型呢?
  实际上,一种严格的面向对象的语言,是不应该有基本数据类型存在的。也就是说,它的所有成分都应该是与类或对象有关的。所以一个严格的面向对象的语言,在使用一个double型的数据前,应该建立Double类的对象。但事实上,因为这些简单数据类型应用得实在太广泛,为了简化编程,Java中就定义了与面向过程语言类似的基本数据类型,它们与类和对象无关。
  从这个意义上说,Java仍然保留了面向过程语言的一些东西,因此它并不是严格意义上的完全面向对象的语言。

除了这八种原数据类型,Java还通过java.lang.String类,提供了对字符串的特殊支持。把字符串用双引号括起来,就会自动创建字符串对象。例如:

  String s = "this is a string";

String对象是不可变的(immutable),即它一旦创建,它的值就不能改变。String类并不是原数据类型,但考虑到Java对它的特殊支持,你可以认为它也是一种原数据类型。在今后讲解简单数据对象(Simple Data Objects)时,将会学习更多的关于String类的知识。

上一篇:2.1 Java程序的基本构成  下一篇:2.2.2 标识符

 有问题吗?请到以下论坛讨论:
csdn技术论坛     Sun公司技术社区     ChinaJavaWorld技术论坛     赛迪网Java基础     赛迪网Java进阶     Java BBS
 有价值的Java站点:
http://java.sun.com/:Sun公司的Java教学站点,内容当然绝对权威。
JDK软件下载:仍是Sun公司拥有,包含最新版本的JDK下载软件。  Java API中文帮助文档:Sun公司提供的最新文档。
Java视频教程:由孙鑫老师主讲录制,内容丰富。如果您不愿意看本站的文字教程,可以看此教程。
http://www.java-cn.com/:一个国内的Java中文站,由个人开发。另一个类似的站点是http://www.cn-java.com/
IBM中文Java站     Java Research     J道:Java和J2EE解决之道     Java家     Matrix-与Java共舞     天极网Java文章汇总     x-spirit的个人空间     JavaWorld.com     Java.net     Java Boutique


版权所有:www.itsway.net
CopyRight(C) 2007 www.itsway.net
苏ICP……
电子邮件:denghongtao@hotmail.com