默认问题 int = 0 , float = 0.0f , double 0.0d , long 0l , char = ‘/u0000’, String=null , boolean=false
精确度问题 System.out.println( 2.0 - 1.1 ) ; // 0.89999999999999999999… 说明浮点数相减并不准确
类型转换问题 byte b1 = 1 ; byte b2 = 2 ; byte b3 = b1+b2 // 应该写成 byte b3 = (byte)(b1+b2) ;
优先问题 System.out.println( “123” + 4*5 ) ; // 12320
移位问题 -8>>1 和 -8>>>1 (>>高位补符号位 >>>高位补0 )
switch(类型) 类型可以是 int , short , byte , char , enum 这五个类型(enum必须是JDK 5.0 )
String不是基本类型,是一个类,每一个字符串都是一个对象。
byte b1 = 10 ;
byte b2 = 20 ;
byte b3 = b1+b2 ; //编译不通过 应该写成 byte b3 = (byte)(b1+b2) ;
因为存在类型的转换:当a+b的时候
1. 先看看有没有double ,有结果是double类型的
2. 再看有没有float
3. 再看long
4. 如果以上都没有就是int
所以上面的例子中必须要求强转,他们的特点都是向上匹配!
final可以修饰类、属性、方法。
当用final修饰类的时候,此类不可被继承,即final类没有子类,被final修饰得类其类中的方法默认的全是final,这样可以用final保证用户调用时动作的一致性,可以防止子类覆盖情况的发生。
当利用final修饰一个属性(变量)的时候,此时的属性成为常量。
利用final定义方法:这样的方法为一个不可覆盖的方法。
private , static 不可以和 abstract 一起使用。
接口就是接口,尽管本质上是抽象类,但是总归不是类,接口没有父类,Object类绝不是接口的父类.
接口和接口之间可以定义继承关系,并且接口之间允许实现多继承。
String A=new String(“hello”);
String A=new String(“hello”);
A==B(此时程序返回为FALSE)
因为此时AB中存的是地址,因为创建了新的对象,所以存放的是不同的地址。