选择题
char a = 10
这样的写法是合法的- 构造函数(构造器)也算是方法,其没有返回值,且返回值不需要声明void
int[] arr = {1,2,3}
是合法的,int[] arr = new int[3]{1,2,3}
是不合法的- java允许多继承,但类只能单一继承,类的单继承避免了菱形继承的危险
- java中类型自动转换 byte,short,char->int->long->float->double
6.super()在子构造器中默认存在,且super(…)如果显示调用的话,只能在构造器的第一行
7.i =i++
这种情况下,i的值不会改变
8.类的修饰符(非内部类)可以有public,abstract,final
9.接口中定义变量默认是public static final
修饰,方法默认是public abstract
修饰
10.抽象类是有构造器的,但抽象类不能直接创建对象,抽象类构造器的唯一作用就是给子类调用
11.final成员变量必须要被初始化,且不能改变。初始化的方法有三种,一种是创建的时候中赋值,一种是代码块中赋值,一种是构造器中赋值
12.实例调用静态方法实际上是找到实例的类引用,然后再根据类找到其静态方法。所以如果把实例设置成null,依旧可以调用该方法
13.子类实例可以自动转为父类实例,但父类实例转为子类实例需要强转
14.多态只是针对方法的,对于变量,还是根据定义类的属性进行选择,例如;
class Father1{
public int a;
public Father1(){
a = 3;
}
public void add(){
a += 5;
}
}
class Son1 extends Father1{
public int a;
public Son1(){
a = 8;
}
@Override
public void add() {
this.a += 5;
}
}
public class ExtendsStudy {
public static void main(String[] args) {
Father1 son1 = new Son1();
son1.add();
System.out.println(son1.a);
}
}
// 输出3
15.方法的重载中,根据参数的诶性进行匹配,如果多个方法都能匹配,选择子类的那个。
16.二叉树的终端节点数量为度为2的节点数量+1
17.栈的出栈不可能出现的情况如何判断:对于每一位,找到其后置位中比其小的值,看这几个数的排序是否单调递减。
例如1,2,3,4的入栈,不可能出现3,1,2,4的出栈
18.包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱,包装类的equals()方法不处理数据转型.故一个Double调用equals比较一个Integer是不会相等的
19.子类能继承父类的所有成员
使用反射可以看出子类是继承了父类的私有方法的(不管是否是final),只是直接调用父类的私有方法是不可以的,但是利用反射的方式可以调用。字段同理。
20.switch case 如果没有break,则会执行对应路径后面的所有代码。
21.start是启动线程对象,使之从新建状态转入就绪状态;sleep让线程睡眠一段时间,在此期间线程不消耗CPU资源;suspend使线程挂起,暂停执行, 如果想恢复线程,必须由其他线程调用 resume方法。
下列方法中哪个是执行线程的方法? () run() //方法用来执行线程体中具体的内容 start() //方法用来启动线程对象,使其进入就绪状态 sleep() //方法用来使线程进入睡眠状态 suspend() //方法用来使线程挂起,要通过resume()方法使其重新启动
- String 的相加是通过StringBuilder进行的,然后通过toString()处理,toString的底层用的是new String();
- switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持。