java final原理,java中关于final说法错误的
如何解决写爬虫IP受阻的问题?立即使用。
含义:最终意思是【只能赋值一次】。
[声明时赋值]和[构造方法赋值]中的赋值位置:
举例:
包com . dada . data;
公共类TestFinal {
//1.声明时赋值
private final int I=0;
private final int j;
public TestF() {
//2.在构造方法中赋值
j=10
}
}注:我们说final只能赋值一次,但是我们知道在java中【有两种值】,【基本数据类型的值】和【引用数据类型的值】。对于基本数据类型,赋值意味着直接给[变量赋值],对于引用数据类型,意味着给[变量引用]赋值。
所以只能赋值一次的意思可以分为两种情况:1。如果是基本数据类型,那么值本身是不能改变的;2.如果是引用数据类型值,引用不能更改,但被引用的内容可以更改。
举例:
定义 Student 类:
包com . dada . data;
公共课学生{
private int id
私有字符串名称;
private int分数;
public Student(int id,String name,int score) {
this.id=id
this.name=name
this.score=score
}
public int getId() {
返回id;
}
public void setId(int id) {
this.id=id
}
公共字符串getName() {
返回名称;
}
public void setName(字符串名){
this.name=name
}
public int getScore() {
返回分数;
}
public void setScore(int score) {
this.score=score
}
@覆盖
公共字符串toString() {
return id: id \ t name: name \ t score: score;
}
}定义测试类:
包com . dada . data;
公共类TestFinal {
私塾期末学生ss;
公共静态void main(String[] args) {
test final TF=new test final();
}
public TestFinal() {
学生学生=新生(1,达达,3);
//第一次赋值
ss=学生;
system . out . println(ss . tostring());
//修改引用对应的对象的内容
student . setid(2);
student.setName(呵呵);
student . set score(10);
system . out . println(ss . tostring());
}
}输出结果:
id: 1姓名:达达分数:3
id: 2姓名:呵呵分数:10总结:
从上面的例子可以看出,变量被final修改后,引用的内容仍然可以被修改。很多时候,我们觉得它不能被修改,因为:
1.通常,我们在定义变量时赋值。此时,对于基本类型数据,它永远不能更改。
2.对于引用型数据,因为我们无法得到对应的引用,所以也觉得引用型数据是无法修改的。以上就是对java final本质的详细解释。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。