Java中有8种基本数据类型来存储数值、字符和布尔值。其中数值型又分为整数类型和浮点类型,其中整数类型有byte、short、int和long四种类型,浮点类型有float和double两种类型。
整数类型
整数类型用来存储整数值,即为没有小数部分的数值,可以是正数,也可以是负数。整型数据在Java中有3种表示形式,分别是十进制、八进制和十六进制。
十进制:如120、0、-127。除了数字0,不能以0作为其他任何十进制数的开头。
八进制:如0123(相当于十进制的83)、-0123(十进制的-83)。八进制的数必须以0开头。
十六进制:如0x25(十进制37)、0Xb01e(十进制45086)。十六进制的数必须以0X或0x开头。
整型数据根据它所占内存的大小,分为byte、short、int和long四种类型,它们具有不同的取值范围:
数据类型 | 内存空间(8位等于1字节) | 取值范围 |
---|---|---|
byte | 8位(1字节) | -128~127 |
short | 16位(2字节) | -32768~32767 |
int | 32位(4字节) | -2147483648~2148473647 |
long | 64位(8字节) | -9223372036854775808~9223372036854775807 |
int x; //定义int型变量x
int x,y; //定义int型变量x和y
int x = 123, y = -100; //定义int型变量x和y并赋初值
在定义以上四种类型变量时,要注意变量的取值范围,超出相应范围时就会报错。对于long型数据,若赋给的初值大于int型变量的最大值或小于int型变量的最小值,则需要在数字后加L或l,表示该数值为长整型,如long num = 2148473648L。
public class test {
public static void main(String[] args) {
byte myByte = 124;
short myShort = 32767;
int myInt = 999999;
long myLong = 2222222222L;
long result = myByte + myShort + myInt + myLong;
System.out.println(result);
}
}
浮点类型
浮点类型表示有小数部分的数字。Java语言中把浮点类型分为单精度浮点类型(float)和双精度浮点类型(double),它们具有不同的取值范围。
数据类型 | 内存空间 | 取值范围 |
---|---|---|
float | 32位 | 1.4E-45~3.4028235E38 |
double | 64位 | 4.9E-324~1.7976931348623157E308 |
在默认情况下,小数都被看做double型,若使用float型小数,则需要在小鼠后面添加F或f。可以使用后缀d或D来明确表明这是一个double型数据,不加d不会出错,但声明float型变量时如果不加f,系统会默认变量是double类型,从而会出错。
float f = 132.123f;
double d1 = 132.123;
double d2 = 456789.12345d;
字符类型
char型
字符类型用于存储单个字符,占用16位(2个字节)的内存空间。在定义字符型变量时,要以单引号表示,如's'表示一个字符,而"s"表示一个字符串,虽然只有一个字符,但由于使用了双引号,它仍然表示字符串,而不是字符。
char x = 'a';
char x = 97;
由于字符a在unicode表中排序位置是97,所以上面的两种定义x字符的方法都是正确的。
同C语言和C++一样,Java语言也可以把字符作为整数对待。由于unicode编码采用无符号编码,可以存储65536个字符(0x0000~0xffff),所以Java中的字符几乎可以处理所有国家的语言文字。若想得到一个0~65536之间的数所代表的unicode表中相应位置上的字符,也必须使用char型显示转换。
public class test {
public static void main(String[] args) {
char word1 = 'd';
char word2 = '@';
int p1 = 12345;
int p2 = 23456;
System.out.println("d在unicode表中的顺序位置是:" + (int)word1);
System.out.println("@在unicode表中的顺序位置是:" + (int)word2);
System.out.println("unicode表中第12345位的是:" + (char)p1);
System.out.println("unicode表中第23456位的是:" + (char)p2);
}
}
转义字符
转义字符是一种特殊的字符变量,它以反斜杠"\"开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”。
转义字符 | 含义 |
---|---|
\ddd | 1~3位八进制所表示的字符,如\123 |
\uxxxx | 4位十六进制数据所表示的字符,如\u0012 |
\' | 单引号字符 |
\\ | 反斜杠字符 |
\t | 垂直制表符,将光标移动到下一个制表符的位置 |
\r | 回车 |
\n | 换行 |
\b | 退格 |
\f | 换页 |
将转义字符赋值给字符变量时,与字符常量值一样需要使用单引号。
char c1 = '\\'; //将转义字符'\\'赋值给变量c1
char c2 = '\u2605'; //将转义字符'\u2020'赋值给变量c2
System.out.println(c1);
System.out.println(c2);
布尔类型
布尔类型又称逻辑类型,通过关键字boolean来定义布尔类型变量,只有true和false两个值,分别代表布尔逻辑中的“真”和“假”。布尔值不能与整数类型进行转换,。布尔类型通常被用在流程控制中作为判断条件。