解析:
字符串和其他类型拼接的时候,会把其他类型转化成字符串,但是要注意优先级:
public class TestString {
public static void main(String[] args) {
String s = "hello";
int a = 5;
int b = 4;
System.out.println(a + b + s);
System.out.println(s + a + b);
}
}
第一个输出9hello, 因为先计算a + b = 9;得到了9以后,在字符串拼接的时候才转化;
第二个输出hello54, 因为依次将int类型转化成字符串类型进行拼接。
解析:
- 尝试加载A,发现A继承于B,所以先加载B,即运行B里的静态代码块,
Load B
; - B加载完了,去加载A,
Load A
; - 调用new A(),会先去调用父类的构造方法,所以
Create B
; - 最后
Create A
解析:
本题考查接口里的方法缺省时,默认为public abstract
修饰的,而不是default;
因此在子类实现该方法时,修饰符范围必须不小于public,因此选D。
解析:
和上面那道题类似,也是需要public
解析:
记住即可,equals相等,要求hashCode也必须相等,因此我们要求重写equals方法必须重写hash方法。
但是反过来不行,因为反过来可能有哈希冲突的问题, 因为两个完全不一样的对象也有可能会哈希值相等。
解析:
Return i++是先返回以后再加,所以每一次返回的值都是原来的值,返回以后才 + 1;
解析:
能够读写文件的是数据流(OutputStream和InputStream)。
解析:
在java中,有:
- << 表示左移;
表示带符号右移;
表示无符号右移;
但是没有<<<操作符。
解析:
匿名内部类的使用:
new 父类构造器(参数) {
.... 具体实现
}
或者
new 接口() {
...具体实现
}
由于匿名内部类没有类的名字,而构造器必须与类名相同,所以不能有构造函数。
A错,因为可以实现一个接口;
C错,可以有形参;
解析:
记住:equals相等,hashCode一定相等,但是反过来不行,因为有哈希冲突。
解析:
正确的输出是false, true, false, 所以最后一个选项是错的。
解析:
记住,String,StringBuilder,StringBuffer都是用final修饰的。
解析:
A. Thread可以被继承,用于启动线程;
B. Number可以被继承,被Integer, Float,Double等继承;
C. Double用final修饰;
D. Math用final修饰
E. ClassLoader可以被继承,用于写用户的自定义类加载器。