一:基本数据类型:
基本的数据类型表示简单的数据,基本的数据类型分为4大类,一共有八种(注意:在java中字符串不是基本的数据类型)。
1 整数类型的数据:byte(字节数),short(短整型),int(整形),long(长整型)
2 浮点数类型的数据:float(单精度浮点数),double(双精度浮点数)
3字符类型的数据:char(字符型)
4布尔类型的数据:boolean(布尔类型)
其中,将整数类型,浮点数类型,字符型类型的数据划分为数值类型,数值类型和布尔类型就构成了基本的数据类型。他们之间可以互相转化。
二:整数类型:
java中整数类型包括byte,short,int,long,它们之间的区别只是数据范围和宽度不同而已,学过c语言的同学都知道,c语言中有无符号的整数unsigned,但是在Java中,所有的数都是有符号的,不存在无符号的数。
整数类型 | 宽度 | 取值范围 |
---|---|---|
byte | 1个字节(8位) | -128~127 |
short | 2个字节(16位) | -2^15~2^15-1 |
int | 4个字节(32位) | -2^31~2^31-1 |
long | 8个字节(64位) | -2^63~2^63-1 |
java中整数默认的类型就是int型,long类型在定义的时需要在后面加l或者L。
三:浮点类型
浮点数主要用来存储小数数值,也可以用来储存范围较大的整数,它分为单精度浮点数(float)和双精度浮点数(double),其中双精度浮点数所使用的内存空间比浮点数要多,可以表示的数据范围与精度值也比较大,说明如下表:
浮点类型 | 宽度 |
float | 4个字节(32位) |
double | 8个字节(64位) |
*注意:在java中浮点数如1.0默认使用的是double双精度类型的,所以如果想要用float单精度,就要在数值后面加f或F。
四:字符类型
字符类型表示的单个字符,在Java中要是声明字符类型字符常量必须是要用单引号括起来的单个字符。如char a = 'c';
字符类型属于数值类型,可以与int等数值类型进行数学运算或者进行转换。这是因为字符类型在计算机保存的是Unicode编码。双字节Unicode的存储范围是\u0000~\uffff,所以由此可见char类型的取值范围是0~2^16-1。
在java中为了表示一些特殊的字符,前面会加上\,这些被称为转义字符,常见的转义字符如下:
字符表示 | Unicode编码 | 说 明 |
---|---|---|
\t | \u0009 | 水平制表符tap |
\n | \u000a | 换行 |
\r | \u000d | 回车 |
\" | \u0022 | 双引号 |
\' | \u0027 | 单引号 |
\\ | \u0027 | 反斜线 |
四:布尔类型
在Java中使用boolean关键字来声明布尔类型的数据,布尔类型比较简单,它只有两个值true和false。
boolean isMan = true;
boolean isWoman = false;
如果给他们除了true和false以外的值,则会发生编译错误。
五:数据类型之间的互相转换
1 自动类型转换,自动类型转换是类型之间转换是自动的,不需要采取其他手段,总的原则就是数据类型由小的数据类型转换为大的数据类型,类型转换图如下:
byte->short->int->long->float->double
在其中,char类型比较特殊,char类型自动转换为int,long,float和double,但是byte和short不能自动转换为char,同理char也不能自动转换为byte和short。
2 强制类型转换:
在数值类型转换的过程中,除了需要自动类型转换之外,有时还需要强制类型转换,强制类型转换是在变量或常量之上加上(目标数据类型)来实现的。代码如下:
// 定义int类型的整数
int i = 10;
// 通过强制转换将int型的转换为byte类型
byte b = (byte)i;
//但是如果将int型的转换为byte型的数,虽然语法上允许,但是那是完全没有必要的
int i = int(b);