一、基本数据类型

  • 8种基本类型
  • 若定义的基本类型超出范围会编译错误
  • 运算结果超出范围不报错,而是出现溢出

1、数值型

1、整数型

1)byte

  • 字节型
  • 占用内存:1个字节,8bit
  • 取值范围:-2的7次方 ~ 2的7次方-1(-128~127)
byte b=2;

2)short

  • 短整型
  • 占用内存:2个字节,16bit
  • 取值范围:-2的15次方 ~ 2的15次方-1(-32768~32767)
short s=32000;

3)int

  • 整型
  • 占用内存:4个字节,32bit
  • 取值范围:-2的31次方 ~ 2的31次方-1(-2147483648~2147483647)
int i=2147483646;

4)long

  • 长整型
  • 占用内存:8个字节,64bit
  • 取值范围:-2的63次方 ~ 2的63次方-1(-9223372036854775808~9223372036854775807)
long l=10000L;

//编译错误,整数直接量(单纯指这个数)不加L,默认是int,超出范围,long l只是说明用l变量来接收后面的值
long l=10000000000;

2、浮点型

1)float

  • 单精度型
  • 占用内存:4个字节,32bit
  • 取值范围:1.4E-45 ~ 3.4028235E38
//若末尾不带F会编译错误,因为不带默认就是double类型
float f=32000.11F;

2)double

  • 双精度型
  • 占用内存:8个字节,64bit
  • 取值范围:4.9E-324 - 1.7976931348623157E308
//末尾带D,也可以省略
double d=32.99;

//编译错误,用double类型接收,但是数值没有表明类型,会认为它是一个int类型,已超出int的取值范围
double d=2147483648;
//标明数值类型
double d=2147483648D;

2、boolean

  • 布尔型
  • 占用内存:1个字节,8bit
  • 只能取值为truefalse
boolean b=true;

3、char

  • 字符型
  • 占用内存:2个字节,16bit
  • 采用Unicode字符集编码,每个字符对应一个码(ASCII码: ‘a’–97 ‘A’–65 ‘0’–48)
char c='a';

//等效于c='a'
char c=97;

二、比较

  • 相等:==

三、转换

  • 数据类型从小到大:byteshortintlongfloatdouble

1、自动类型转换

  • 小类型到大类型
//int->long
int i=123;
long l=i;

//long->int,编译错误
long q=123L;
int w=q;

//float->double
float f=1.2F;
double d=f;

//double->float,编译错误
double d=1.2;
float f=d;

2、强制类型转换

  • 大类型到小类型
  • 强转有可能溢出或丢失精度

1)浮点型->整型

  • 小数位全部舍弃
//double->int
double d=1.2;
int i=(int)d;   //i=1

2)float->double

  • 超出范围会四舍五入

四、运算

  • 先把运算中第1个变量转换成大类型,这样运算会按照最大类型的计算
int a=2/4				//0
double a=2/4			//0.0
double a=(double)2/4	//0.5
05-01 16:42