第1章 Java语言基础
- 1.2基本数据类型
- 1.2.1整数类型
- 1.2.2浮点型
- 1.2.3字符型
- 1.2.4布尔型
1.2基本数据类型
Java语言的数据类型是相当丰富的,除了基本数据类型【布尔型(boolean)、字符型(char)、字节型(byte)、短整型(short)、整型(int)、长整型(long)、单精度(float)、双精度(double)】以外,还有面向对象特有的复合数据类型【数组(array)、接口(interface)与类(class)】。
数据所占存储空间的大小是以字节为单位的。不同基本数据类型的关键字、所占的字节数及数据范围都有明显的差异,具体如下表所示:
数据类型 | 类型符号 | 所占字节 | 表示范围 | 变量默认值 |
字节型 | byte | 1 | -128 ~ 127 | 0 |
短整型 | short | 2 | -32768 ~ 32767 | 0 |
整型 | int | 4 | -2 147 483 648 ~ 2 147 483 647 | 0 |
长整型 | long | 8 | - 9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807 | 0L |
单精度 | float | 4 | -3.4 E 38 ~ 3.4 E 38 | 0.0F |
双精度 | double | 8 | -1.7 E 308 ~ 1.7 E 308 | 0.0 |
字符号 | char | 2 | 0 ~ 65 535 | '\000’空字符 |
布尔型 | boolean | 1 | 布尔值只能是true或false | flase |
1.2.1整数类型
Java定义了4个整数(不带小数点的数)类型:字节型(byte)、短整型(short)、整型(int)、长整型(long)。这些都是有符号的值,即正数或负数。Java不支持仅仅是正的无符号的整数。
Java虚拟机中,整数类型的长度实际上并不表示它占用的存储空间,而是该类变量所能表达的最大二进制位数。
Java语言里,整型数的表达有3种形式:
- 十进制整数:这是日常生活中使用最多的,如12、-48、25等。
- 八进制整数:以0(零)开头的数,如0125表示十进制数85,-016表示十进制数-14。
- 十六进制整数:以0x或0X开头,如0x 124表示十进制数292,-0X15表示十进制数-21。
1.字节型
最小的整数类型是字节型,它是有符号的8位类型,数值范围是-128~127。处理网络或文件数据流时,字节类型的变量特别有用。
使用byte这个关键字可定义字节变量。例如,下面定义了两个byte变量:a1和a2。byte a1, a2;
2.短整型
Short是有符号的16位类型,数值范围是-32 768~32 767。因为它被定义为高字节优先,因而Java中较少使用。下面是声明Short变量的一些例子:short m1; short s;
3.整型
整型(int)是Java中最常用的整数类型,它是有符号的32位类型,数值范围是-2 147 483 648 ~ 2 147 483 647。int类型的变量通常可被用来控制循环及做数组的下标。
4.长整型
长整型(long)所表达的数值范围在所有的整型中最广,一般在超出整型的范围时使用长整型。但是,在给长整型变量赋以超出整型数值范围以外的数时,必须在值后加大写L或者小写的 l 。例如:
• { long long1=147483634;
long long2=2147483648l;(最后面不是1,而是小写 l )
long long3=2547483648L;
long long4=2547483657; }
如前所述,整型所能表达的最大的数是2 147 483 647,上例中,把整型数147483634赋给能表达更长的数的 long1时是正确的。如果想把比2 147 483 647更大的数赋给一个Iong型的变量,必须在这个数后面加上字母l或者L,所以long2和long3也赋值成功。long4行编译时会出错,是因为试图把一个比2 147 483 647更大的数赋给long4,而后面没有加L。
1.2.2浮点型
浮点型的数用来表达带小数的数,且可满足对精度与准确性有一定要求的科学应用。浮点数的表达有两种形式:
- 十进制数形式:由数字和小数点组成,如0.8544、9.98、2.57等。
- 科学计数法或指数形式:如1.23e3或1.23E3表示1.23x103.其中,e或E之前必须是数字,且e或E后面的数必须为整数。又如:2.1894e9表示2.1894x109。
1.单精度浮点型
单精度浮点型(float)专指占用32位存储空间的单精度值。给单精度的变量赋以带小数的初值时必须在数值后加f或者F。
单精度在一些处理器上比双精度快,且只占用双精度一半的空间。当需要小数部分并且对精度的要求不高时,单精度浮点型数据是可行的。例如,当表示货币的元和分时,单精度浮点型是可行的。以下是声明单精度浮点型变量的例子:
float me_money, temperaturel, f12;
2.双精度浮点型
双精度型浮点数占用64位的存储空间,它可以充分满足人们对精度的要求,是科学计算中广为使用的。例如,数学函数sin()、cos()和sqrt()均返回双精度的值。当需要保持多次反复迭代的计算的精确性时,或在操作值是很大的数字时,双精度型是最好的选择。给双精度浮点数赋值时可以在后面加上字母d或者D。
1.2.3字符型
在Java语言中,char是用于存储单字符的数据类型。Java使用Unicode编码代表字符,该编码由16位二进制构成,所以Unicode字符集比ASCII字符集大得多。Java中每个字符char都占16位,即双字节。该编码定义的国际化字符集几乎能表示人类语言中所有的字符集。它是几十种字符集的统一,如简体中文、繁体中文、拉丁文、阿拉伯语、日文片假名、英文等。Java中的字符表示形式有4种:
- (1)包括在单引号之内的单个字符,如‘A’、‘n’ 等。
- (2)用单引号括起来的八进制 Unicode字符,形式为‘\ddd’, 其中d的范围是0~7,如‘\125’。
- (3)用单引号括起来的十六进制 Unicode字符,形式为‘\uxxxx’, 其中4位x的范围是0-F。它可以表示全部 Unicode字符内容如‘\u283d’。
- (4)Java字符集中还包括一些不能显示的控制字符,可以通过转义字符来表示,如表所示:
转义字符 | 功能 | Unicode码 |
\ b | 退格 | \u0008 |
\ t | 水平制表 | \u0009 |
\ n | 换行 | \u000a |
\ f | 换页 | \u000c |
\ r | 回车 | \u000d |
char 又是一种特殊的整数类型,没有负数,其范围是 0~65 536,它们可以被转换为整数并可进行加、减之类的整数运算。例如:
package Test;
public class Char_C {
public static void main(String[] args) {
char ch1='A';char ch2=68;
System.out.println(ch1+6);
System.out.println(ch2);
}
}
运行结果:
D:\Java\jdk-13.0.2\bin\java.exe "-javaagent:D:\IntelliJ IDEA Edition 2021.2.3\lib\idea_rt.jar=53127:D:\IntelliJ IDEA Edition 2021.2.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\IDEA Workspace\out\production\IDEA Workspace" Test.Char_C
71
D
进程已结束,退出代码为 0
【程序解析】程序第4行和第5行分别输出71和字母D。ch1在参与算术运算时被自动提升为int类型,同样表达式chl+6的结果也是整型,其中字母A在ASCII字符集 ( Unicode也一样) 中编码为65,所以A进行加法运算后得到71。而ch2编码为68,其对应的字母就是D。此外 String 关键字可以用来说明字符串类型,将在后文中有所涉及。例如:
String sx1=“my”;
1.2.4布尔型
布尔型 ( boolean ) 的数据只有两个值 true (逻辑真)和 false (逻辑假),分别表示两种逻辑状态,和C/C++不同的是,他们不和任何数值对应。例如:
- boolean bo1;
- boolean bo2=true;
- boolean b1,b2=false;