1、数据类型:节约内存、提高效率
基本数据类型和引用数据类型
1.0、基本数据类型:4类8种
整数类、小数类、布尔类、字符类
1.1、整数类:4种(byte、short、int、long)
1.1.1、byte字节型:8bit=1byte:
//输出Byte类型的最大值最小值
System.out.println(Byte.MAX_VALUE);//127
System.out.println(Byte.MIN_VALUE);//-128
1.1.2、short短整型:16bit=2byte
//输出Short类型的最大值最小值
System.out.println(Short.MAX_VALUE);//32767
System.out.println(Short.MIN_VALUE);//-32768
1.1.3 int整型:32bit=4byte
System.out.println(Integer.MAX_VALUE);//2147483647
System.out.println(Integer.MIN_VALUE);//-2147483648
1.1.4 long长整型:64bit=8byte;
注意:整数常量默认类型为int类型,int类型是32位存储的
System.out.println(Long.MAX_VALUE);
//MAX:9223372036854775807
System.out.println(Long.MIN_VALUE);
//MIN:-9223372036854775808
1.2、小数类:2种
1.2.1 double双精度浮点型:64bit=8byte
double d=5.0;
System.out.println(Double.MAX_VALUE);
//1.7976931348623157E308
System.out.println(Double.MIN_VALUE);
//4.9E-324
1.2.2 float单精度浮点型:32bit=4byte
//小数常量类型默认为double型,64bit存储,而float型的变量f是32bit容量,所以放不下。需要制定类型的常量需加标记
float f = 6.0f;
System.out.println(Float.MAX_VALUE);
//3.4028235E38
System.out.println(Float.MIN_VALUE);
//1.4E-45
1.3、布尔类:1种
1.3.1、 boolean布尔型:8bit=1byte,占1bit
boolean flag =true;
boolean flag2=false;
1.4、字符类:1种
char c ='中';//单引号引起来的内容,方且只能放一个字符
1.5、其他进制写法
int a10=10000;//10进制
System.out.println(a10);
int a16=0x10;//16进制
System.out.println(a16);
//使用API计算十进制转16进制
int a10_16=1234;
System.out.println(Integer.toHexString(a10_16));
int a8=0123;//八进制
System.out.println(a8);
//使用API计算十进制转八进制
int a10_8=123;
System.out.println(Integer.toOctalString(a10_8));
int a2=0b1;//二进制
System.out.println(a2);
//使用API计算十进制转二进制
int a10_2=123;
System.out.println(Integer.toBinaryString(a10_2));
1.6、取整问题
// 整数
System.out.println(9/3);
System.out.println(9/2);//截尾取整
// 小数
System.out.println(9.0/2);//保留小数
System.out.println(8.0/3);//舍入误差 由于二进制和十进制之间转换造成的
1.7、数据类型转换
1.7.1、口诀:小转大自动转 大转小强制转
取值范围大的大小:byte--short--int--long--float--double
byte b1 =12;
short s1 = b1;
s1=666;
int i=s1;
i=888;
long l=i;
l=900000000000000000L;
float f=l;//小转大:取值范围
f=3.3f;
double d=f;
1.7.1.1、char的取值范围:0-65535
char类型底层存放的是数字,系统发现数据类型为char时显示为字符
char c11=97;//底层是数字
System.out.println(c11);
char c12=65;
System.out.println(c12);
1.7.2大转小强制转
1.7.2.1整数之间强转:可能发生溢出
byte b1=1;
byte b2=127;
byte b3=(byte)(b1+b2);//超范围,强转,强转符号作用域
System.out.println(b3);//-128——127
byte b4=(byte)259;
System.out.println(b4);
1.7.2.2、小数之间强转
double pi=3.1415926535897932384626433;
float pif=(float)pi;//小数强转精度丢失
System.out.println(pi);
System.out.println(pif+"小数强转精度丢失");
// 4.7.2.3小数和整数之间的强转
double d1 = 9.9999;
int i1=(int)d1;
System.out.println(d1);
System.out.println(i1+"截尾取整");
int i2=10;
double b22=(double)i2;
System.out.println(b22+"添加精度");
1.7.2.3、小数和整数之间的强转
double d1 = 9.9999;
int i1=(int)d1;
System.out.println(d1);//9.9999
System.out.println(i1+"截尾取整");//9
int i2=10;
double b22=(double)i2;
System.out.println(b22+"添加精度");//10.0添加精度
// 4.7.3 byte、short、char与int转换关系
int i3=12;
byte b5=(byte)i3;//大转小 强制转
System.out.println(b5);//12
byte b6=12;//常量不超范围可以直接复制给byte、short、char
// byte b7=129;//超范围
// byte、short、char的变量在运算时一律提升 为int
byte b8=1+126;
byte b9=1;
byte b10=126;
byte b12=(byte)(b9+b10);
System.out.println(b12);//127
byte b13=(byte)(10+b10);
System.out.println(b13);//-120
int i97=97;
System.out.println((char)i97);//a
char c97='a';
System.out.println((int)c97);//97