Java笔试面试每日打卡(3)-基础篇

题目

–来自《Java程序员面试宝典》

  1. 抽象类(abstract class) 与 接口 (interface)有什么异同
  2. 内部类有哪些
  3. 如何获取父类的类名
  4. this 与 super 有什么区别
  5. 变量命名有哪些规则
  6. break,continue 以及 return 有什么区别
  7. final finally finalize 有什么区别
  8. assert 有什么作用
  9. static 关键字的作用
  10. switch 注意事项

题目及答案

  1. 抽象类(abstract class) 与 接口 (interface)有什么异同
    答:接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
    类可以实现很多个接口,但是只能继承一个抽象类
    类可以不实现抽象类和接口声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
    抽象类可以在不提供接口方法实现的情况下实现接口。
    Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
    Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
    接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化。
  2. 内部类有哪些
    答:内部类就是将一个类定义到另一个类的内部。主要有4种:静态内部类,成员内部类,局部内部类,匿名内部类。静态内部类与静态方法类似,符合静态方法的特点。去掉static的内部类叫做成员内部类,与普通方法使用类似。将成员内部类放到外部类的方法中是就是局部内部类。作用域也和方法内部的局部变量相同。匿名内部类必须要在 new 的后面且匿名类必须实现接口或者继承一个类。匿名类不能有构造函数,静态成员,方法,类。
  3. 如何获取父类的类名
    答:Java提供 getClass().getName()方法获取当前的运行类的类名(一定是当前运行类的类名)。使用super.getClass().getName()获取的还是当前的类名。所以获取父类只能通过反射机制 getClass().getSuperclass().getName()获取父类名了。
  4. this 与 super 有什么区别
    答:this 指向当前类的实例 ,super指向父类的实例。this的典型使用就是setter 和 getter 方法。super常用到获取父类的成员方法或变量。当子类构造函数需要显示的调用父类构造函数时,必须显示的声明在第一条语句。
  5. 变量命名有哪些规则
    答:Java的变量名必须由字母或数字或下划线或美元符组成。开头必须是字母或下划线或美元符。
  6. break,continue 以及 return 有什么区别
    答:break 结束当前层的循环,嵌套到内层只能结束当前内层循环;continue 结束本次直接跳到下一次循环。return 直接返回结构,任何循环都终止。
  7. final finally finalize 有什么区别
    答:final 声明 类,方法 ,变量,并保证其内存指向的不可变性,具体可转一文读懂 final。finally只能出现在异常执行的代码块try/catch中。放到异常的最后块,无论执行try或者catch都会进入finally块,常用与关闭文件流,断开连接等。finalize 是 Object 类的一个方法,垃圾回收器调用 被回收对象的finalize() 方法。
  8. assert 有什么作用
    答:
  9. static 关键字
    答:一文搞懂static
  10. switch 注意事项
    答:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章