最详细的 Java 基础面试题汇总( 三 )

  • 都是面向对象的语言 , 都支持封装、继承和多态
  • Java 不提供指针来直接访问内存 , 程序内存更加安全
  • Java 的类是单继承的 , C++ 支持多重继承;虽然 Java 的类不可以多继承 , 但是接口可以多继承 。
  • Java 有自动内存管理机制 , 不需要程序员手动释放无用内存
  • 在 C 语言中 , 字符串或字符数组最后都会有一个额外的字符‘\0’来表示结束 。 但是 , Java 语言中没有结束符这一概念 。
  • 6. 什么是 Java 程序的主类 应用程序和小程序的主类有何不同?一个程序中可以有多个类 , 但只能有一个类是主类 。 在 Java 应用程序中 , 这个主类是指包含 main()方法的类 。 而在 Java 小程序中 , 这个主类是一个继承自系统类 JApplet 或 Applet 的子类 。 应用程序的主类不一定要求是 public 类 , 但小程序的主类要求必须是 public 类 。 主类是 Java 程序执行的入口点 。
    7. Java 应用程序与小程序之间有哪些差别?简单说应用程序是从主线程启动(也就是 main() 方法) 。 applet 小程序没有 main() 方法 , 主要是嵌在浏览器页面上运行(调用init()或者run()来启动) , 嵌入浏览器这点跟 flash 的小游戏类似 。
    8. 字符型常量和字符串常量的区别?
    1. 形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的若干个字符
    2. 含义上: 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置)
    3. 占内存大小 字符常量只占 2 个字节; 字符串常量占若干个字节 (注意: char 在 Java 中占两个字节)
    “ java 编程思想第四版:2.2.2 节 ”
    9. 构造器 Constructor 是否可被 override?Constructor 不能被 override(重写),但是可以 overload(重载),所以你可以看到一个类中有多个构造函数的情况 。
    10. 重载和重写的区别重载发生在同一个类中 , 方法名必须相同 , 参数类型不同、个数不同、顺序不同 , 方法返回值和访问修饰符可以不同 。
    下面是《Java 核心技术》对重载这个概念的介绍:
    最详细的 Java 基础面试题汇总文章插图
    重写重写是子类对父类的允许访问的方法的实现过程进行重新编写,发生在子类中 , 方法名、参数列表必须相同 , 返回值范围小于等于父类 , 抛出的异常范围小于等于父类 , 访问修饰符范围大于等于父类 。 另外 , 如果父类方法访问修饰符为 private 则子类就不能重写该方法 。 也就是说方法提供的行为改变 , 而方法的外貌并没有改变 。
    11. Java 面向对象编程三大特性: 封装 继承 多态封装封装把一个对象的属性私有化 , 同时提供一些可以被外界访问的属性的方法 , 如果属性不想被外界访问 , 我们大可不必提供方法给外界访问 。 但是如果一个类没有提供给外界访问的方法 , 那么这个类也没有什么意义了 。
    继承继承是使用已存在的类的定义作为基础建立新类的技术 , 新类的定义可以增加新的数据或新的功能 , 也可以用父类的功能 , 但不能选择性地继承父类 。 通过使用继承我们能够非常方便地复用以前的代码 。
    关于继承如下 3 点请记住:
    1. 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法) , 但是父类中的私有属性和方法子类是无法访问 , 只是拥有 。
    2. 子类可以拥有自己属性和方法 , 即子类可以对父类进行扩展 。
    3. 子类可以用自己的方式实现父类的方法 。 (以后介绍) 。
    多态所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定 , 而是在程序运行期间才确定 , 即一个引用变量到底会指向哪个类的实例对象 , 该引用变量发出的方法调用到底是哪个类中实现的方法 , 必须在由程序运行期间才能决定 。