Java有八种基本数据类型,这八种基本数据类型可以分为三类,数值类型(byte、short、int、long、float、double)、字符类型(char)、布尔类型(boolean)。数值类型又可以分为两类,整数类型(byte、short、int、long)和(浮点类型float、double)。
一、基本数据类型
1)数值类型(byte、short、int、long、float、double)
整数类型(byte、short、int、long)
byte:8位、范围 128(2^7)~127(2^71)、默认值0;
short:16位、范围32768(2^15)~32767(2^15 1)、默认值0;
int:32位、范围 2,147,483,648(2^31)~2,147,483,647(2^31 1)、默认值0;
long:64位、范围 9,223,372,036,854,775,808(2^63)~ 9,223,372,036,854,775,807(2^63 1)、默认值0l/0L;
二进制整型常量:以0b或0B开头,例:0b0、0B00;
八进制整型常量:以0开头,例:0123、034;
十进制整型常量:默认,不需要加特殊标示;
十六进制整型常量:以0x或0X开头,例:0xff、0X9A;
长整型常量:以L作结尾,例:9l、342L;
浮点类型(float、double)
float:单精度、32位、长度是8位指数 + 23位有效尾数、默认值 0.0f/0.0F;
double:双精度、64位、长度是11位指数 + 52位有效尾数、默认值0.0/0.0d/0.0D;
浮点型常量:float类型的后面一定要加f或F,例如1.1f、1.1F;
小数默认的是double类型,double类型后面可以用d或D标识,一般不加。
2)字符类型(char)
char:16 位、范围0( \u0000)~ 655355(\uffff)
特殊的转义字符:\n 换行 (0x0a)、\r 回车 (0x0d)、\f 换页符(0x0c)、\b 退格 (0x08)、\0 空字符 (0x20)、\s 字符串、\t 制表符、\" 双引号、\' 单引号、\\ 反斜杠、\ddd 八进制字符 (ddd)、\uxxxx 16进制Unicode字符 (xxxx);
3)布尔类型(boolean)
boolean:8位、值为true真或false假。
二、包装类
Java每个基本类型都有一个相应的包装类,包装类提供了对应类型的一系列实用方法,同时包装类可以解决集合不允许存放基本数据类型数据的问题。
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
1)Byte、Short、Integer、Long、Float、Double属于Number类的子类。
2)Character与Boolean属于Object子类。
装箱:将基本数据类型变成包装类的类型。
拆箱:将包装类的类型变为基本数据类型。
自动装箱-> Integer inta = intkey;
自动拆箱-> int intb = inta;
三、类型转换
类型数据间的转换有两种方式:自动转换(隐式类型转换)和强制转换(显式类型转换),通常出现在表达式或在方法的参数传递。
自动转换:小的类型自动转为大的类型。整数类型可以自动转化为浮点类型,但是可能会产生误差。字符可以自动转换为整数。
例:byte a = 50; int b = a + 50; b = 100
强制转换:强制转换很可能导致精度丢失。在把容量大的类型转换为容量小的类型时必须使用强制类型转换。浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。
例: byte d = (byte) 130; d = -126