1. instanceof :判断其左边对象是否为其右边类的实例,返回boolean类型的数据。
2.String 类:
(1) 对于两个字符串的比较,“==”比较地址,而equals比较内容。
(2) 字符串池:如果没有用new创建新的对象,分配新的内存空间,该字符串便被存放于字符串池中,如果字符串池中已经有该内容,则不会再写入。
(3) intern:强行捕获string对象的内容放到字符串池中,即使被分配了内存空间。也就是说,虽然String s = new String ; 但由于s.intern() , s仍被放于缓冲池中。另外,它遵循以下规则:对于任意两个字符串s和t,当且仅当s.equals(t)为true时,s.intern() == t.intern() 才为true。
(4) String (相当于char型数组,final类型,定义后不可变), StringBuffer , StringBuilder (可变,如有内部缓冲区溢出,容量自动增大).
StringBuffer :速度快,不支持同步,不安全。
StringBuilder:支持同步,安全。
3. final:不允许子类覆写该方法,如果用了final 就表示父类已经足够完美,不需任何扩展或覆写,只允许别人直接使用。但是也要慎用,原因如下:final 类利用了一个叫inline 的机制,该机制无需进行例行的方法调用(也就节省了断点保存,压栈等操作),而是直接将方法的主体插入到调用处,可节省时间;但是另一方面,如果主体过于庞大,或者多处调用,那么就可能反倒影响了效率。
4.主函数为什么是静态的?
因为系统会自动加载静态的方法,而动态的方法会等着被调用时加载。主函数属于程序的入口,自然没有人去调用。
5. 多态:
(1) 方法有多态,属性没多态。
(2) A a = new B ( ); a有两种状态,编译时为A类,执行时为B类。
6. 构造函数与普通函数在子父类关系中的区别:
如果子类重写了父类的方法,调用时只执行子类重写后的方法。但是调用时父类的构造方法都会加载,而且优先于子类载。