对于基本类型来说,不可变说的是变量当中的数据不可改变
对于引用类型来说,不可变说的是变量当中的地址值不可改变
—旦使用final用来修饰局部变量,那么这个变量就不能进行更改。
—次赋值,终生不变
public static void main(String[] args) { int num = 1; System.out.println(num); num = 2; System.out.println(num); //—旦使用final用来修饰局部变量,那么这个变量就不能进行更改。 //—次赋值,终生不变” final int num2 = 200; System.out.println(num); final int num3; num3 = 30; // 对于基本类型来说,不可变说的是变量当中的数据不可改变 // 对于引用类型来说,不可变说的是变量当中的地址值不可改变 Student s = new Student("赵丽颖"); System.out.println(s); System.out.println(s.getName()); s = new Student("霍元甲"); System.out.println(s); System.out.println(s.getName()); final Student s2 = new Student("高圆圆"); System.out.println(s2.getName()); s2.setName("高圆圆圆圆圆圆圆圆"); System.out.println(s2.getName()); }
public class Student { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Student(String name) { this.name = name; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + '}'; }
final关键字用于修饰成员变量:
对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变。
由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了
对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值,二者选其-。
必须保证类当中所有重载的构造方法,都最终会对于inal的成员变量进行赋值。
代码:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)