Java 基础面试题

文章目录

重载与重写

重载:是在同一个类中,方法名相同,方法参数类型,个数不同,返回类型不同。

重写:子类重写父类的方法,方法名,参数等等都一致。主要用于面向对象多态的实现条件之一。就是父类的引用指向子类的对象。

抽象类与接口

抽象类:用 abstract 修饰的类为抽象类,里面可以定义抽象方法,普通方法,局部变量,如果子类不是抽象类继承抽象父类需要重写抽象父类的方法。

接口:Interface 关键字,里面只能定义公共抽象的方法,局部变量也一定为公共静态常量,实现该接口的实现类必须重写该接口的全部方法。

一个类可以实现多个接口,但是只能继承一个类。

面向对象

面向对象三个特性

第一封装:就是将方法和变量,封装在类中,对外展现需要暴露的方法,隐藏内部实现的细节。使用时通过创建一个对象来调用类中的方法,创建一个一个类似于模块化的结构,每个类各司其职,便于管理与维护,也起到代码复用的效果。

第二继承:通过继承,子类可以获取父类私有以外的方法和变量。实现了代码的复用。

第三多态:

第一种是编译时多态,主要通过方法的重载实现。

第二种是运行时多态,对象引用的具体类型在运行时才确定,通过子类继承父类并重写父类的方法,然后使用父类的引用指向子类的对象实现。

a = a + b 与 a += b 的区别

a += b 会自动转化类型,比如 bype a = 127 , bype b = 127 , a += b , a 的类型转为 int 型。

a = a + b 时,,比如 bype a = 127 , bype b = 127 , a = a + b,会报错,超出类型的范围。

final、finalize、finally

final,关键字修饰的方法,变量,在初始化后就不能修改。

finalize()方法,是在内存对象被垃圾回收算法清除之前调用的方法,可以重写用来做一些清理工作。

finally是try-catch 异常处理的结构,finally是一定会被执行的,一般用于释放数据等等。

String、StringBuild、StringBuffer

String 是不可变的字符串,每当修改它时,都会创建一个新的字符串。

StringBuilder 和 StringBuffer 是可变的字符串,每当修改它时,都是在原来的字符串上修改。两者的区别在于:StringBuilder 是线程不安全的,但是效率比较快,StringBuffer 是线程安全的,但是效率比较慢。

所以如果需要使用频繁修改的字符串,建议使用 StringBuilder 和 StringBuffer,这样可以避免资源造成的浪费。如果是在并发的情况下,使用 StringBuffer 保证线程安全。

位运算

左移符 x >> 1,等同于 x 乘 2 ,位运算中,低位补 0

右移符 x << 1 ,等同与 x 除 2 ,位运算中,高位补 0,低位补 1

无符号右移 >>>,忽略符号位,空位都以 0 补齐。

反射

程序在运行时的时候,通过反射来获取类信息,用类来调用方法与属性,或者通过反射获取对象,用对象来调用方法与属性。

我是小辉,24 届毕业生。当下是找工作ing,欢迎关注,持续分享。

相关推荐
原野池予几秒前
深入Java集合框架:HashMap源码解析(JDK 8)
java·开发语言
古法安卓6 分钟前
Android-Direct Boot 阶段与 getFilesDir() 路径变更问题深度分析
android·java·android studio
-今昭-10 分钟前
Logstash 管理
java·服务器·前端
测试运维日常笔记11 分钟前
VMware vSphere、ESXi 与 vCenter Server:核心概念与关系详解
java·开发语言
风流 少年33 分钟前
Spring AI 2.0:Flux
java·人工智能·spring
m0_5474866636 分钟前
《面向对象与Java程序设计》全套PPT课件2026
java·开发语言
星恒随风40 分钟前
C++ 红黑树封装(二):迭代器、const_iterator 与 operator[] 完整实现 mymap 和 myset
开发语言·c++·状态模式
jason成都1 小时前
ignav-next|Java 层封装 GNSS/INS 组合导航框架,隔离 RTKLIB 与 INS 内核,双模块独立演进、最小侵入
java·开发语言
抓不住时间的沙1 小时前
butterfly主题美化,打造属于自己的个性博客
java·开发语言·前端·javascript·node.js·github
Zane19941 小时前
从一个发短信的类到多态调用:封装、继承、多态到底是怎么长出来的
java·后端