1.final说明
final 表示最终的,可以用来修饰类、变量、方法。
- final 修饰类:此类不能被其他类所继承
- 比如:String类、System类、StringBuffer类
| final class A{ |
| |
| } |
| |
| class B extends A{ |
| |
| } |
| class A { |
| public final void say() { |
| System.out.println("A:say"); |
| } |
| } |
| |
| class B extends A { |
| public void say() { |
| System.out.println("B:say"); |
| } |
| } |
- final 修饰变量:该变量变为常量,常量名要大写
- 修饰局部变量:修饰形参时,表明此形参是一个常量,一旦赋值后(调用方法传递实参),就只能在方法体内使用此形参,但不能重新赋值。
| class A { |
| private final String name = "张三"; |
| public final void say() { |
| name = "李四"; |
| } |
| } |
- 使用static 和final 修饰属性,表示全局常量
2.面试题
(1)题一:哪种方式编译通过
| |
| public int addOne(final int x){ |
| return ++x; |
| } |
| |
| |
| public int addOne(final int x){ |
| return x+1; |
| } |
(2)题二:求输出值
final修饰的是引用类型形参,地址值不变,对象的属性值可以变,如果在addOne()
方法中加上o = new Other()
则报错(修改地址)。
| class Other{ |
| public int i; |
| } |
| |
| public class A { |
| public void addOne(final Other o){ |
| o.i++; |
| } |
| |
| public static void main(String[] args) { |
| Other o = new Other(); |
| A a = new A(); |
| a.addOne(o); |
| a.addOne(o); |
| System.out.println(o.i); |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本