“Java is not platform-independent, it is the platform”
http://soft.yesky.com/info/223/2414723.shtml
1. C c=new C(new B(new A()));,构造函数顺序是A,B,C. /
2.java类中方法默认访问修饰符是friendly,但并不写,意为只能由同一个包内的对象访问。
3.java类中抽象方法必须使用abstract关键字修饰,并且不能有函数体。包含抽象函数的类必须定义为abstract.
定义为abstract的类不一定要包含抽象方法。
4.另外abstract不能与static,private或final关键字组合使用。因为abstract方法要被子类修改/
5.interface中所有方法默认为public abstract的。所有变量隐式为static final的,因此必须给出初始值。且以后不能修改。
6.java中goto 是保留字,不能使用。可以用label,但只能用在循环里。
7.java中没有unsigned int类型。
8.使用new创建数组后,此时数组还是一个引用数组。只有再创建新的对象,并把对象赋值给数组引用,到此初始化结束。
如: Object[] objs=new Object[2];objs[0]=new Object(),objs[1]=new Object[];
9.将一个方法声明为final,编译器会把这个方法置为inline.
把局部变量声明为final,起使代码更加清晰的作用。
或者在匿名访问内联类时,使用final?
10.与c++对比,在java类中,所有的方法默认都是"虚函数". 只有以关键字 final 标记的方法才是非虚函数。
virtual
修饰,而衍生类中由基类继承而来的重载方法必须用override
修饰.
11.匿名内部类(Anonymous InnerClass),在创建实例的同时给出类的定义,所有这些在一个表达式中完成。
Runnable rn = newRunnable(){
};
相当于
class Anomymous implements Runnable {
}
Runnable rn =newAnomymous();
前者更简洁。
注意前者最后的分号不能省略,编译器把整个看作一条语句。
不过,匿名内部类仅限于只实例化一次的内部类,如果内部类需要多次实例化,通常用后者。
另外,匿名内部类要么继承一个父类,要么实现一个接口,不能两者兼有,实现接口时也不能实现多个接口。
12. Cannot refer to a non-final variable stateArray inside an inner class defined in a different method
final 相当于c++中的const
13.enum,要写在类中,或单独成一个文件。
public enum MessageType
{
Message_Phone_Outcall,
Message_Phone_Incoming,
};
转换成int: MessageType.Message_Phone_Outcall.ordinal();
int转换成枚举:MessageType messageType=MessageType.values()[msg.what];