final修饰符(3)-基本类型变量和引用类型变量的区别
2024-10-19 06:50:27
final修饰基本类型变量
当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变
final修饰引用类型变量
当使用final修饰引用类型变量时,它保存的仅仅是一个引用,final只能保证这个引用类型变量所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以改变
package com.j1803.finalTest;
import java.util.Arrays;
public class FinalReferenceTest {
public static void main(String[] args) {
//final修饰数组变量,iArr是一个引用变量
final int [] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//对数组元素进行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//对数组iArr重新赋值,合法
iArr[2]=-100;
//下面语句对iArr重新赋值,非法
//iArr=null;
//final修饰一个Person变量,p是一个引用变量
final Person p=new Person(22);
//改变Person对象p的实例变量,合法
p.setAge(45);
System.out.println(p.getAge());
//非法
//p=null;
}
//final修饰数组变量,iArr是一个引用变量
final int [] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//对数组元素进行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//对数组iArr重新赋值,合法
iArr[2]=-100;
//下面语句对iArr重新赋值,非法
//iArr=null;
//final修饰一个Person变量,p是一个引用变量
final Person p=new Person(22);
//改变Person对象p的实例变量,合法
p.setAge(45);
System.out.println(p.getAge());
//非法
//p=null;
}
}
class Person{
private int age;
class Person{
private int age;
public int getAge() {
return age;
}
return age;
}
public void setAge(int age) {
this.age = age;
}
this.age = age;
}
public Person(int age) {
super();
this.age = age;
}
}
super();
this.age = age;
}
}
最新文章
- 妙用psexec分析关机一直挂起的Windows update 更新
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- Screen Orientation for Windows Phone
- angular-select绑定之后option不能更新问题
- 【SDOI2010题集整合】BZOJ1922~1927&;1941&;1951&;1952&;1972&;1974&;1975
- 【CodeVS】1204 寻找字串位置
- JVM监控和Java应用程序调试
- MySQL 中的 FOUND_ROWS() 与 ROW_COUNT() 函数
- Spring学习4-面向切面(AOP)之aspectj注解方式
- 服务端提供的JSON数据接口与用户端接收解析JSON数据
- Python 读写excel数据
- Web服务的体系架构
- Unity3D根据游戏的发展Terrain Toolkit地形生产
- 唯独ie浏览器缓存ajax请求
- java:接口特性 接口与抽象类/普通类的区别
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
- java 静态代理模式
- Linux查看当前目录下所有子目录是否包含某个文件
- Vue系列之 =>; webpack处理样式文件
- angular 实现左侧和顶部固定定位布局