选择题

  1. char a = 10 这样的写法是合法的
  2. 构造函数(构造器)也算是方法,其没有返回值,且返回值不需要声明void
  3. int[] arr = {1,2,3} 是合法的,int[] arr = new int[3]{1,2,3}是不合法的
  4. java允许多继承,但类只能单一继承,类的单继承避免了菱形继承的危险
  5. java中类型自动转换 byte,short,char->int->long->float->double
    一些要注意的小点 - 图1

6.super()在子构造器中默认存在,且super(…)如果显示调用的话,只能在构造器的第一行

7.i =i++这种情况下,i的值不会改变

8.类的修饰符(非内部类)可以有public,abstract,final

9.接口中定义变量默认是public static final修饰,方法默认是public abstract修饰

10.抽象类是有构造器的,但抽象类不能直接创建对象,抽象类构造器的唯一作用就是给子类调用

11.final成员变量必须要被初始化,且不能改变。初始化的方法有三种,一种是创建的时候中赋值,一种是代码块中赋值,一种是构造器中赋值

12.实例调用静态方法实际上是找到实例的类引用,然后再根据类找到其静态方法。所以如果把实例设置成null,依旧可以调用该方法

13.子类实例可以自动转为父类实例,但父类实例转为子类实例需要强转

14.多态只是针对方法的,对于变量,还是根据定义类的属性进行选择,例如;

  1. class Father1{
  2. public int a;
  3. public Father1(){
  4. a = 3;
  5. }
  6. public void add(){
  7. a += 5;
  8. }
  9. }
  10. class Son1 extends Father1{
  11. public int a;
  12. public Son1(){
  13. a = 8;
  14. }
  15. @Override
  16. public void add() {
  17. this.a += 5;
  18. }
  19. }
  20. public class ExtendsStudy {
  21. public static void main(String[] args) {
  22. Father1 son1 = new Son1();
  23. son1.add();
  24. System.out.println(son1.a);
  25. }
  26. }
  27. // 输出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()方法使其重新启动

  1. String 的相加是通过StringBuilder进行的,然后通过toString()处理,toString的底层用的是new String();
  2. switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持。