java面试中的题解
1.面向对象的特征有哪些方面
- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象。
- 继承:从已有类得到信息创建新类的过程,继承让软件系统具有了良好的延展性。
- 封装: 把数据和操作数据的方法绑定在一起,对数据的访问只能通过固有的接口定义。隐藏一切可以隐藏的东西,对外提供的只是最简单的接口。
- 多态:是同样的对象引用调用同样的方法但是做了不同的事情,分为编译时多态和运行时多态。
2.多态的好处?
- 可替换性(substitutability)。多态对已存在代码具有可替换性。
- 可扩充性增加子类而不影响已经存在模块的运行和操作。
- 灵活性使得代码更加灵活多样,提高代码使用效率
- 简化性多态简化应用软件的代码编写和修改过程。
3.int和Integer有什么区别?
答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
Java 为每个原始类型提供了包装类型:
4.&和&&的区别
-&有两种用法(1)按位与;(2)逻辑与。
-&&短路与运算,也就是说运算符&&左边的表达式如果是false,右边的表达式就不会进行运算
|逻辑或与||短路或的区别也是如此。
5.解释内存中的栈(stack)、堆(heap)的用法。
- 栈空间:一个基本数据类型的变量,对象的引用,函数调用的现场保护都储存在栈空间。
- 堆:通过new关键字和构造器创建的对象放在对空间;
6、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?
答:接口可以继承接口,而且支持多重继承。抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类。
7
7.python与java的区别?
Python比Java语言更具灵活性,而且代码简单,清晰明了,方便开发者理解,从这个层次去看,Python的优势是入门快、开发效率快,而Java语言则是强调整体性,统一性,注重模式开发,通过大量的类、接口的调用,实现功能以及业务,。
Java是为了大型项目而生的,多种框架的实现让Java能够轻而易举的实现模块功能的开发,而Python则是专注与小项目,小功能模块,简单的脚本语言,简单的功能实现,都可以通过Python语言来实现,各自分工,再相互结合,才是各种开发语言合理存在,合理利用的必然原因
8.自动装箱与拆箱
装箱:将基本类型用它们对应的引用类型包装起来;
拆箱:将包装类型转换为基本数据类型;
Java使用自动装箱和拆箱机制,节省了常用数值的内存开销和创建对象的开销,提高了效率,由编译器来完成,编译器会在编译期根据语法决定是否进行装箱和拆箱动作