目录
1、基础数据类型
1.1、数值型
1.1.1、整数型(byte(1字节),short(2字节),int(4字节),long(8字节)) 1字节==8位
1.1.2、浮点列席(float(4字节,double(8字节))
1.2、字符型(char(2字节))
1.3、布尔型(boolean(1位))
2、引用数据类型
类(4字节)、接口(4字节)、数组(4字节)
3、类型转换
3.1、自动类型提升(小转大)
byte、short、char-->int-->long-->float--->double
3.1.1、当容量小的数据类型和容量大的数据类型做运算时,自动转为容量大的
3.1.2、当byte、short、char三者相互之间做运算时都是用int及其以上类型接收
byte a = 2;
int b = 3;
char d = 'a';
byte c1 = a+b; //编译不通过
int c3 = a+b //编译通过,c2的返回类型比byte大都可以用来接收
char c2 = a+d; //编译不通过
int c4 = a+d; //编译通过
3.2、强制类型转换(大转小)
double a = 10.9;
int c = (int)a; // 结果是10 出现精度丢失(不是四舍五入)
3.3、特殊情况
long a = 12345;
System.out.println(a);// 正常指执行,因为12345默认类型是int,int<long(自动转换)
long b = 123564512512;
System.out.println(b);// 编译失败,超出int范围
// 正确使用
long c = 123564512512L;
float a1 = 10.13;
System.out.println(a1); // 编译失败,小数默认类型是double,double>float(不能自动转换)
// 正确使用
float b1 = 10.13F;// (或者直接强转float b1 = float(10.13))
4、包装类
基本数据类型 | 包装类 |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
4.1、基本类型 ---> 包装类(方式很多,只列举部分)
例:方式一:new 包装类(值);// Integer a = new Integer(10)
方式二:包装类.valueOf(值);//Integer a = Integer.valueOf(10)
4.2、包装类 ---> 基本类型
例:调用包装类的xxx的xxxVaule方法。 // int b = a.intValue();
4.3、基本类型/包装类型 ---> String
方式一:String str = 10+ "";
方式二:String str2 = String.valueOf(值);
4.4、String ---> 基本数据类型/包装类
调用包装类的parseXXX(String s); // int num = Interger.parseInt("123");
4.5、自动装箱
Integer c = 234; // 编译器自动会改为Integer c = Integer.valueOf(234);
4.6、自动拆箱
int d = c; // 编译器自动改为Int d = c.intValue();
注意点
Integer t1 = new Integer(1);
Integer t2 = new Integer(1);
System.out.println(t1==t2) // false 包装类比较的是对象的地址
/*Integer初始化的时候会创建一个[-128,127]的缓存数组,当调用.valueOf自动装箱时会检查当前值是否在
缓存数组范围内,如果在则从缓存拿出创建好的对象,不存在则创建新的Integer对象*/
Integer t3 = 1;
Integer t4 = 1;
System.out.println(t3==t4) // true
System.out.println(t3.equals(t4)) // true 包装类默认重写了object的equals()方法,进行值比较
Integer t5 = 128;
Integer t6 = 128;
System.out.println(t5==t6) // false
System.out.println(t5.equals(t6)) // true