首页 > 编程语言 > 详细

Java面试题

时间:2021-03-10 08:41:00      阅读:35      评论:0      收藏:0      [点我收藏+]

java面试题

什么是面向对象?谈谈你对面向对象的理解

  • 面向对象是对于面向过程来讲的,是两种不同的处理问题的角度。面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象),以及各自需要做什么

例子:洗衣机洗衣服

面向过程会将任务拆解成一系列的步骤(函数)

  • 打开洗衣机

  • 放衣服

  • 放洗衣粉

  • 清洗

  • 烘干

面向对象啧会拆出人和洗衣机两个对象

人需要做的:

  • 打开洗衣机

  • 放衣服

  • 放洗衣粉

洗衣机需要做的:

  • 清洗

  • 烘干

面向过程比较直接高效,而面向对象更易于服用、扩展和维护。

面向对象的三大特性

封装

  • 封装的意义:明确标识出允许外部使用的所有成员函数和数据项

  • 内部细节对外部调用透明,外部调用无需修改或关心内部实现

例子
  • JavaBean属性私有,提供getset对外访问,因为属性的赋值或者获取逻辑只能由javaBean本身决定,而不能由外部修改。

  • orm框架:操作数据库,不需要关心链接如何简历,sql如何执行,只需引入mybatis,调用方法

继承

  • 继承基类的方法,并做出自己的改变或扩展

  • 子类共性的方法或者属性是直接调用父类的,而不需要自己再定义,只需扩展自己的方法即可

多态

  • 基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑并不相同。

  • 形成多态的前提:继承,方法重写,父类引用指向子类对象,父类无法调用子类特有的方法

个人总结:

面向对象是将一件事情拆分,分出这件事情中的对象,定义每个对象需要做的事情,之后再复用或者维护,直接找到这个对象查询它下面的方法即可

面向过程是直接开始做一件事情,不考虑对象,虽然做的过程中会因为不用区分对象,效率会稍高一些,但之后想要找一个方法很不方便

 

JDK JRE JVM 有什么区别

JDK:全称java Develpment Kit,java开发工具

JRE:全称java Runtime Environment,java运行环境

JVM:全称java Virtual Machine,java虚拟机

String,StringBuffer,StringBuilder有什么区别?

String是final修饰的,不可变,每次操作都会产生新的String对象

StringBuffer和StringBuilder都是在原本的对象上进行操作,StringBuffer是线程安全的,StringBuilder是线程不安全的

为什么说StringBuffer是线程安全的?

StringBuffer方法都是synchronized(同步锁)修饰的。

相比之下,String,StringBuffer,StringBuilder的性能对比哪个更高效?

StringBuilder>StringBuffer>String

他们的使用场景:

经常需要改变字符串内容时需要使用StringBuffer以及StringBuilder,因为他们更改时不会创建新的对象,不会造成数据冗余。优先使用StringBuilder(性能最快),多线程使用共享变量时使用StringBuffer(线程安全)

==与equals的区别

==对比的是栈中的值,对比基本数据类型时比较的是变量,对比引用类型时则对比引用类型在堆中内存对象的地址。

equals可以被重写,不做处理的equals跟==是一样的。String类型的equals就是被重写后的(重写原理:将字符串中的每个字符取出来对比是否相等,如果相等,啧返回为true)

 

Java面试题

原文:https://www.cnblogs.com/yunchuran/p/14509347.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!