final修饰基本类型和引用类型变量的区别
来源:互联网 发布:sql server 费用 编辑:程序博客网 时间:2024/05/17 09:11
当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本类型变量不能被改变。但对于引用类型的变量而言,它保存的仅仅是一个引用,final只保证这个引用所引用的地址不会改变,即一直引用同一个对象,但这个对象完全可以发生改变。
final int[] iArr={6,8,9,10}
//对数组进行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//对数组元素赋值,合法
iArr[2]=-8;
//下面语句对iArr重新赋值,非法
iArr=null;
注意两种写法:
public class Person
{ private final Name name;
public Person(Name name)
{
this.name=new Name(name.getFirstName(),name.getLastName());
}
public Name getName()
{
return new Name(name.getFirstName(),name.getLastName())
]
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public class Person
{ private final Name name;
public Person(Name name)
{
this.name=name;
}
public Name getName()
{
return name;
]
}
第二种写法:当name内容发生改变时,person也会改变,因为他们公用一个name。因此如果需要设计一个不可变类,必须注意引用类型的属性,如果引用类型是可变的,必须采用必要的措施保护该属性引用对象不会被修改,这样才能创建真正不可变类。
对于一个private方法,因为它仅在当前类中可见,所以其子类无法访问该方法,就无法重写该方法========如果子类中定义一个与父类private方法有相同方法名,相同形参列表,相同返回值类型的方法,也不是方法重写,只是重新定义了一个新方法。因此
即使用final修饰一个private访问权限的方法,依然可以在其子类中定义与该方法具有相同方法名,相同形参列表,相同返回值类型的方法。
final类
final修饰的类不可有子类,例如java.lang。Math类就是一个final类,它不可以有子类。
- final修饰基本类型和引用类型变量的区别
- final修饰基本类型变量和引用变量区别
- 66 Java final 修饰基本类型变量和引用类型变量的区别
- 6.4.3 final修饰基本类型变量和引用类型变量的区别
- java final 与引用类型变量和基本类型区别
- this、super、final关键字(以及final修饰基本数据类型和引用类型的区别)
- final、static、static final修饰引用类型时的区别
- Java中的基本类型和引用类型变量的区别
- JS变量基本类型和引用类型的区别
- Java中的基本类型和引用类型变量的区别
- Java 中基本类型 和 引用类型 变量的区别
- Java中的基本类型和引用类型变量的区别
- Java中的基本类型和引用类型变量的区别
- Java中的基本类型和引用类型变量的区别
- 基本类型和引用类型的区别
- 基本类型和引用类型的区别
- 引用类型和基本类型的区别
- 引用类型变量和非引用类型变量的区别
- gcc/g++ 命令的常用选项
- 解决VS2012/VS2013/VS2015下编译的程序无法在XP下运行的问题
- 文章标题
- JavaScript中常见的HTML DOM操作
- centos7使用chrome在CSDN上传文件时,文本上传框被阻止的解决方法
- final修饰基本类型和引用类型变量的区别
- 极客 - 博文30 - 单链表的重新排列
- 【Android自定义View实战】之自定义项目通用的加载等待对话框LoadingDialog
- c++ 运行时多态
- linux
- Debug 和 Release的区别
- CSS 4.2 样式-文本
- 基本数据类型总结
- 汉字转换为拼音