基本数据类型
byte(字节) 8bit(位、比特)
short 16bit
int 32bit
long 64bit
float 32bit
double 64bit
char 16bit
boolean 8bit
引用数据类型
之所以叫做引用数据类型,是因为存的的只是地址,是内容的引用。
eg.String str=new String(“123”);
//123储存在内存中的某个地方,而str只是储存了一个地址,指向了“123”
常量池
//这里的ABC都储存在一个常量池中,str1和2都指向同一个地址,所以输出true
String str1 = "ABC";
String str2 = "ABC";
System.out.println(str1==str2);// 这里输出true
int a=0;
int b=0;
System.out.println(a==b); //这里输出true
//这里用了new,所以两个abc储存位置不同
String str1 = new String("ABC");
String str2 = new String("ABC");
System.out.println(str1==str2);// 这里输出flase
类型转换
1.强制转型(向下转型)
这是不安全的转型
举例 int i = (int)1.9; // 输出1,数据有所丢失
2.自动转型 ( 向上转型 )
对于基本数据类型,就是小的转成大的。对于类,就是子类转为父类。这是安全的转型。
3.常见问题
- A a = new B(); // 以上代码实现的前提是? A 是 B的父类
- 子类重写了父类的方法,自动转型之后调用哪个?
还是子类自己的方法,因为此时,a只存储了指向b的地址。 - 自动转型之后,能不能调用自己独有的方法?不能
eg. 子类B有方法1,2,3。父类A有方法1,2。那么B转型后只能调用1,2
- 向下转型(强制转型)需要先确认这个对象内存中实际的类型(原先的类型) ,只能转回去
eg.B b2 = (B)a;
b2.testBPrivate();