一、基本数据类型
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种 布尔型
整数型中,在不指定任何类型的情况下,默认是int类型;
byte:
例子:byte a = 100,byte b = -50。
short:
例子:short s = 100,short r = -200。
int:
例子:int a = 1000, int b = -2000。
long:
例子:long a = 100000L,Long b = -200000L。
这种类型主要使用在需要比较大整数的系统上;
注意:"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
整数型的进制写法:
1、十六进制(0x 开头)
byte b=0xF;short s=0xF;int i=0xF;long L=0xFL;
2、八进制(0 开头)
byte b=077;short s=077;int i=077;long L=077L;
3、二进制(0b 开头)
byte b=0b1;short s=0b1;int i=0b1;long L=0b1L;
浮点型中,在不指定任何类型的情况下,默认是double类型;
float:
浮点数不能用来表示精确的值,如货币;
例子:float f1 = 234.5f。//加f或F
double:
double类型同样不能表示精确的值,如货币;
例子:double d1 = 123.4。//[可选]加d或D
boolean:
boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子:boolean one = true。
char:
char类型是一个单一的 16 位 Unicode 字符;
char 数据类型可以储存任何字符;
例子:char letter = 'A';。
浮点型:
float(32位):1bit(符号位) 8bits(指数位) 23bits(尾数位)
double(64位):1bit(符号位) 11bits(指数位) 52bits(尾数位)
二、基本数据类型的包装类
Java每个基本类型在java.lang包中都有一个相应的包装类
包装类有何作用
1、提供了一系列实用的方法
2、集合不允许存放基本数据类型数据,存放数字时,要用包装类型
总结:除了int和char类型的包装类是全称,其余的包装类都是首字母大写
这八种包装类所继承的父类不全都相同。
1、Integer,Byte,Float,Double,Short,Long都属于Number类的子类,Number类本身提供了一系列的,返回以上六种基本数据类型的操作。
2、Character属于Object子类
3、Boolean属于Object子类。
装箱及拆箱
1、将基本数据类型变成包装类称为装箱。
2、将包装类的类型变为基本数据类型称为拆箱。
3、在JDK1.5之后,提供了自动装箱和自动拆箱功能。
三、数据类型转换
1、自动类型转换(隐式类型转换)
整型、字符型数据可以混合运算。
运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。

自动转换有以下规律:
小的类型自动转化为大的类型
整数类型可以自动转化为浮点类型,可能会产生舍入误差
字符可以自动提升为整数
2、强制类型转换(显式类型转换)
格式: (type)value
type是要强制类型转换后的数据类型
注意:
强制类型转换可能导致溢出或损失精度
在把容量大的类型转换为容量小的类型时必须使用强制类型转换
浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
例子:
byte byte1=127;//目前这个值是最大值:2^7-1
short short1=32767;//目前这个值是最大值:2^15-1
int int1=2147483647;//目前这个值是最大值:2^31-1
long long1=9223372036854775807L;//目前这个值是最大值:2^63-1
float float1=3.4028235E38F;//目前这个值是最大值:2^128 估值
double double1=1.7976931348623157E308;//目前这个值是最大值:2^1024 估值
//隐式转换
//从byte隐式转换到short
short s1=byte1;
//从short隐式转换到int
int i1=short1;
//从int隐式转换到long
long l1=int1;
//从long隐式转换到float(浮点数:单精度)
float f1=long1;
//从float(浮点数:单精度)隐式转换到double(浮点数:双精度)
double d2=float1;
//显示转换
//从double(浮点数:双精度)显示转换到float(浮点数:单精度)
float f2=(float)double1;
//从float(浮点数:单精度)显示转换到long
long l2=(long)float1;
//从long显示转换到int
int i2=(int)long1;
//从int显示转换到short
short s2=(short)int1;
//从short显示转换到byte
byte b2=(byte)short1;