java final原理,java中关于final说法错误的

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: