0
点赞
收藏
分享

微信扫一扫

Java面试题(1-50题)

金穗_ec4b 2022-02-05 阅读 51

1、什么是面向对象?

面向过程注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象)、以及各自需要做什么
面向过程比较直接高效,而面向对象更易于复用、扩展和维护。
再谈谈面向对象的三大特性:封装,继承,多态

  • 封装:在于明确标识出允许外部使用的所有成员函数和数据项
    1、javabean的属性私有,提供getset对外访问,因为属性的赋值或者获取逻辑只能由javabean本身决定。
    2、例如orm框架
    操作数据库,我们不需要关心连接时如何建立的、sql是如何执行的,只需要引入mybatis,调用方法即可
  • 继承:继承基类的方法,并作出自己的改变或扩展
  • 多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行逻辑不同。
父类类型 变量名=new 子类对象()

2、JDK、JRE、JVM三者区别和联系

jdk:java开发工具
jre:java运行时环境
jvm:java虚拟机
jdk包含jre和jvm

3、==和equals

==对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址
equals:object中默认也是采用==比较,不过通常会重写
String.equals():比较两个字符串的内容
在这里插入图片描述

3、简述final作用

修饰类:类不可以被继承
修饰方法:表示方法不可被子类覆盖,但是可以重载
修饰变量:表示遍历一旦被复制就不可以更改它的值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、为什么局部内部类和匿名内部类只能访问局部final变量?

在这里插入图片描述

5、String、StringBuffer、StringBuilder区别及使用场景

String是final修饰的,不可变,每次操作都会产生新的String对象
StringBuffer和StringBuilder都是在原对象上操作
StringBuilder线程不安全,StringBuffer是线程安全的(被synchronized修饰)
性能:StringBuilder>StringBuffer>String
如果需要经常改变字符串就用后两个,优先使用StringBuilder,如果多线程共享则使用StringBuffer

6、重载和重写的区别

在这里插入图片描述

7、接口和抽象类的区别

举报

相关推荐

0 条评论