Java的基本数据类型在Java中,每个存放数据的变量都是有类型的,如:char ch;float x;int a,b,c;ch是字符型的,就会分配到2个字节内存。不同类型的变量在内存中分配的字节数不同,同时存储方式也是不同的。所以给变量赋值前需要先确定变量的类型,确定了变量的类型,即确定了数据需分配内存空间的大小,数据在内存的存储方式。1. Java中的数据类型Java中的数据类型有基本数据类型和引用数据类型两大类,图2-1呈现了Java中数据类型的概貌。图2-1 Java中的数据类型概貌本讲就基本数据类型进行讨论,引用数据类型将在下一篇中论述。以下讨论每一种数据类型时,对常量和变量作分别说明。所谓常量,就是直接的值;而变量则是放置常量的容器,除了放置常量之外,也可以给变量一个运算式,变量中的值是可变的。2. 布尔型—boolean布尔型又名逻辑型,它是最简单的数据类型,在流程控制时常会用到。有C++编程经验的学习者,要特别看清,Java中的布尔型数据不对应于任何整数值。布尔型常量:true和false。需要注意的是,布尔常量的组成字母一律都是小写的。 布尔型变量:以boolean定义的变量,如:boolean b = true; //定义变量b是boolean,且值为true3. 字符类型—char(1)字符常量字符常量指用单引号括起来的单个字符,如‘a’,‘A’。请特别注意,字符的定界符是单引号,而非双引号。除了以上所述形式的字符常量值之外,Java还允许使用一种特殊形式的字符常量值,这通常用于表示难以用一般字符来表示的字符,这种特殊形式的字符是以一个“\”开头的字符序列,称为转义字符。Java中的常用转义字符见表2-1。表2-1 Java中的转义字符转义字符 描 述\ddd 1~3位八进制数所表示的字符(ddd)\uxxxx 1~4位十六进制数所表示的字符(xxxx)如‘\u0061’表示‘a’\’ \” 单引号字符和双引号字符\\ 反斜杠\r 回车\n 换行\t 横向跳格\f 走纸换页\b 退格(2)字符变量以char定义的变量,如char c='a';要特别加以说明的是,Java的文本编码采用Unicode集,Java字符16位无符号型数据,一个字符变量在内存中占2个字节。例1:编程测试十六进制数41、51对应的字符,并相隔一个tab位输出。分析:已知十六进制数,求字符。根据表2-1,可用'\uxxxx'的转义字符形式来表示所求字符,然后直接输出即可。[HDTest.java] class HDTest{ public static void main(String[] args){ char a='\u0041'; char b='\u0051'; System.out.println(a+" "+b); //字符之间以若干空格相间 } }程序运行结果:A Q4. 定点类型(整型)定点类型包括了字节型、整型、短整型和长整型,它们在内存中虽然占据的字节数互不相同,但它们的存储方式是同样的,所以这里把这些类型归并在一起讨论。“定点”的意思是把小数点定在末尾,小数点后没有数字的数据,Java中通常把它们称为整数。(1)定点常量定点常量是整型常数,它可用十进制、八进制、十六种进制三种方式来表示。ナ十进制定点常量:如123、-456、0。ナ八进制定点常量:以0前导,形式为0dd...d。如0123表示十进制数83,-011表示十进制数-9。ナ十六进制定点常量:以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18。(2)定点变量定点变量即整型变量,可细分成字节型变量、整型变量、短整型变量和长整型变量四种。表2-2对各种定点变量的开销内存字节数和数值范围作简要说明。表2-2 关于整型变量的说明 定点变量 占字节数 范 围字节型byte 1 [-128,127],即从-27~27-1短整型short 2 [-32 768, 32 767],即-215~215-1整型int 4 [-2 147 483 648, 2 147 483 647],即-231~231-1长整型long 8 -263~263-1需要注意的是,如果要将一定点常量赋值给一个定点变量,需要查验常量是否在该变量的表达范围内,如超出范围程序会编译出错。如:byte b = 200; //JCreator编译时错误信息是“可能损失精度”例2:阅读程序,分析其运行结果。[OHTest.java] class OHTest{ public static void main(String[] args){ int x = 010; System.out.println("x = "+ x); int y = 0x10; System.out.println("y = " + y); } }程序运行结果略,请思考并调试验证。5. 浮点型(实型)(1)浮点常量即带小数点的实型数值,可以由直接带小数点的数值和科学计数法两种形式来表示:ナ带小数点的数值形式:由数字和小数点组成,如0.123、.123、123.、123.0。ナ科学计数法表示形式:由一般实数和e±n(E±n)组成,如12.3e3、5E-3,它们分别表示12.3×103和5×10-3。需要注意的是,e或E之前必须有数字,且e或E后面的指数必须为整数。(2)浮点变量浮点变量有单精度变量和双精度变量之分,不同的精度开销的内存字节数和表达的数值范围均有区别。两种浮点变量占内存字节数和数值范围见表2-3。表2-3 单精度变量和双精度变量简要说明浮点变量 占字节数 范 围单精度float 4 3.4e-038~3.4e+038,-3.4e+038~-3.4e-038 双精度double 8 1.7e-308~1.7e+308,-1.74e+038~-3.4e-038浮点常量也有单精度和双精度之分,前面列出的常量均是双精度常量,如果要特别说明为单精度常量,可以数据末尾加上f或F作为后缀,如12.34f。如果要特别指明一个浮点常量是双精度常量,数据末尾不需要添加后缀,或者在数据末尾加上d或D作为后缀,如12.34d。例3:输入一个圆的半径,求圆面积。分析:圆半径在编写程序时是不确定的,其值在程序运行时输入,这样程序就比较通用,可以处理不同半径的求面积和周长问题。这就涉及数据输入的问题,参照本讲第一节,输入数据通过Scanner扫描器解决。[CircleArea.java] import java.util.Scanner; class CircleArea{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); double r = sc.nextDouble(); double area = Math.PI * r * r; System.out.println(area); } }