Java面试复习

1、面向对象和面向过程的区别

   面向过程:性能高,消耗的资源少,一般用于嵌入式开发(单片机)

   面向过程: 易扩展、维护、服用,有继承、封装、多态性质,可以降低系统的耦合,性能比面向过程低

 

2、Java语言的特点

  面向对象、与平台无关,安全可靠,支持多线程和网络编程,编译与解释并行

 

3、什么是JVM,  JDK, JRE?

  JVM是Java虚拟机,运行Java字节码的,JVM对不同系统开发不同的虚拟机,目的使用相同的字节码,JVM再将字节码转换成二进制的机器码

  字节码就是后缀为.class的文件,因为字节码运行在虚拟机上,无关处理器和操作系统,所以一次编译可以在不同操作系统上运行

  

  JDK是Java Development Kit,简单理解就是开发者用的,包含了JRE,还有编译器,能够创建和编译程序

  JRE是Java Run environmen Java运行时环境,包含JVM和Java类库,和一些其它基础组件,但不能开发Java程序

 

4、Oracle JDK 与 Open JDK的区别

  Oracle JDK每三年发布一次,而Open JDK每三个月发布一次

  Oracle JDK并不完全开源,而Open JDK完全开源

  Oracle JDK比Open JDK更加稳定,性能更好,商业软件还是选择稳定的比较好

 

5、 Java和C++的区别

  Java不可以用指针访问内存程序更安全

  Java类只能单继承,而C++类可以多继承,但Java可以通过接口实现多继承

  Java有垃圾处理机制,不需要手动释放内存

 

6、什么是 Java 程序的主类 应用程序和小程序的主类有何不同

  主类是指包含main()方法的类,一个程序只能有一个主类,继承自系统的JApplet或Applet的子类

  小程序的主类一定要是public修饰的,而应用程序的主类没有指定

 

7、   字符型常量和字符串常量的区别?

  字符型常量是单引号括起来的单个字符,字符串常量是双引号括起来的一串字符

  字符型常量至少占两个字节,字符串常量至少占一个字节,(结束符)

 

8、构造器 (Constructor)是否能被重写

  构造方法不能被继承,所以不能被重写,只能重载(一个类中有多个构造方法)

 

9、重载和重写的区别

  重载: 在同一个类中,方法名相同,参数类型、 顺序、 个数、 方法修饰符、修饰符可以不同

  重写: 在父子类中,方法名和参数列表必须相同,返回参数要小于等于父类的范围,抛出异常范围要小于等于父类,不能重写父类的私有方法

 

10、面向对象的三大特征(封装、继承、多态)

  1)封装: 对象属性私有化,对外只提供访问属性的方法

  2}继承: 在已定义类的基础上,创建新的类,可以添加一些新的属性,和方法,也可以用父类的功能,达到代码复用的效果

      子类可以对父类进行扩展

      子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有

  3)多态: 调用方法时,在编译期并不确定调用的是哪个方法,只能在程序运行期间确定

      实现多态方式: 继承(多个子类对同一方法的重写)和接口实现接口并覆盖接口中同一方法)

 

11、String为什么是不可变的?String StringBuffer 和 StringBuilder 的区别是什么?

  String类是用final修饰的类,用来保存字符串,private final char value[ ]

  StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,AbstractStringBuilder 中也是使用字符数组保存字符串char[]value,没有final修饰

  StingBuffer加了同步锁,线程安全的,StringBuild是非线程安全的,性能略高于StringBuffer

 

12、自动装箱与拆箱

      装箱:将基本类型用它们对应的引用类型包装起来

      拆箱:将包装类型转换为基本数据类型

 

13、 在一个静态方法内调用一个非静态成员为什么是非法的?

  静态方法可以不通过对象进行调用,因此不能调用其他非静态变量,也不可以访问非静态变量成员。

 

14、import (java 和 javax) 有什么区别?

  Java是API所需要的包,Javax是扩展API的包

 

15、接口和抽象类的区别是什么?

  接口的方法是public,所有方法在接口中不能有实现,而抽象类可以有非抽象方法

  接口中只能有static和final修饰的变量,而抽线类中不一定

  一个类可以实现多个接口,但只能实现一个抽象类

 

16、成员变量与局部变量的区别有那些?

  成员变量属于类的,局部变量是在方法中定义的

  成员变量可以被public等修饰符修饰

  被static修饰的成员变量是属于类的,否则属于实例

 

17、什么是方法的返回值?返回值在类的方法里的作用是什么?

   获取到的某个方法体中的代码执行后产生的结果,用于其它操作

 

 

 

还在整理中,如有错误,望指正。。。

posted @ 2020-03-03 12:43  草木深  阅读(647)  评论(0编辑  收藏  举报