1,Java通过new申请的内存的默认值是0,比如下面的数组b,b的元素默认值是0,要是double的话就是0.0,bool的话就是false。
int[] b=new int[5];
2,byte b=1,c=2; byte f=b+c; 会报错,因为b+c的结果是int类型的,因为在Java中涉及到byte、char、short的数据类型一般要转换为int类型去做运算,但是 b+=c,b++ 不会报错
3,浮点数的稀疏性质:大数吃掉小数,越靠近0月密集,越远越稀疏,这个和整数是不一样的。
4,Java中基本变量在函数调用传递是传值,对象是引用传递
5,finalize:这个是方法是在垃圾回收器再将对象从内存中清除之前的必要的清理工作。
6,Java try catch finally ,即使在catch中有return,finally中也会执行
7,Serializable:当一个类实现了Serializable接口(该接口仅为标记接口,不包含任何方法定义),表示该类可以序列化.序列化的目的是将一个实现了Serializable接口的对象转换成一个字节序列,可以。 把该字节序列保存起来(例如:保存在一个文件里),以后可以随时将该字节序列恢复为原来的对象。甚至可以将该字节序列放到其他计算机上或者通过网络传输到其他计算机上恢复,只要该计 算机平台存在相应的类就可以正常恢复为原来的对象。
8,switch 中的表达式必须是整形,int,char是可以的,字符串就不可以。
9,多态:允许把子类类型指针复制给父类类型指针,C++中通过虚函数实现,虚函数就是子类可以重写的函数,然后运行的时候动态的调用子类的该函数。
10, 强制类型转换。
比如系统中存在Father、Son两个对象。首先我们先构造一个Son对象,然后用一个Father类型变量引用它:
Father father = new Son();
Son son = (Son)father;
这条语句是可行的,其实father引用仍然是Father类型的,只不过是将它的能力加强了,将其加强后转交给son引用了,Son对象实例在son的变量的引用下,恢复真身,可以使用全部功能了。
前面提到父类强制转换成子类并不是总是成功,那么在什么情况下它会失效呢?当引用类型的真实身份是父类本身的类型时,强制类型转换就会产生错误。例如:
Father father = new Father();
Son son = (Son) father;
这个系统会抛出ClassCastException异常信息。
所以在继承中,子类可以自动转型为父类,但是父类强制转换为子类时只有当引用类型真正的身份为子类时才会强制转换成功,否则失败。