关于final关键字说法正确的是,static和final关键字一般在什么情况下使用

  关于final关键字说法正确的是,static和final关键字一般在什么情况下使用

  如何解决写爬虫IP受阻的问题?立即使用。

  前言:

  果然,在最后一次面试中,面试官又问了这个问题:请告诉我最后一个关键词的具体含义,并详细说明它的作用和它与static的区别。为了让面试的大家都关注到这个问题,我特意整理了一下答案,供大家参考。

  1、最后一个关键字的含义

  表面意义是不变的,不变的;类似于C语言中的const关键字,指的是不能改变的量,不同于静态标量static。静态变量仅指一个存储空间,其值可以改变。之所以用final,是从软件设计的角度出发,因为别人看到final这个关键词就知道是什么意思,他们就明白了其中的意思。但是,正是因为这种‘语义’的存在,所以在编程中要谨慎使用,避免误用。

  Java中,最后的修饰是常量,变量名要大写;

  数学类:公共静态final double e=2.7854.888000000884公共静态final double PI=

  .java源代码中很多变量都是用final修饰的。

  2、终审的作用

  根据最终修改位置的不同功能,有三种情况:

  (1)修改变量,final修改的变量必须初始化,初始值赋值后不能重新赋值。

  注意:局部变量不在我们讨论的范围内,因为局部变量有自己的作用范围,不会被private、public等词修饰。

  (2)修改方法,final modification所代表的方法不能重写。

  (3)由final修饰的修饰类不能被继承。

  注意:对于最终修饰的类,类中的所有成员方法都被隐式指定为最终方法。

  2.1、最终修改变量

  final修饰的变量必须通过三种方式初始化:1)在定义时初始化,2)在构造函数中设置值,3)在非静态块中为final实例变量设置值。

  一个最终修改的变量意味着这个变量在初始化后不能被改变。这里的不可变是指它的值对于基本类型是不可变的,但是它对于对象变量的引用是不可变的,也就是不能指向其他对象。

  公共类Test01{

  final int x1=10000

  最终int x2

  最终int x3

  {

  x2=20000

  }

  公共exe3(){

  this.x3=3000

  }

  }如果final修改的变量是对象类型,那么不可变意味着变量不能再指向另一个对象,但是对象的值可以改变,比如:

  最终操作Operate=new Operate();//operate有一个公共变量I初始化为10operate.i=11

  operate.i=12

  system . out . println(operate . I);//Output 12以上是自定义类。即使是数组、列表等集合类型,保存的值也是可以更改的。3.最终和静态的区别

  Static作用于成员变量表示只保存一个副本,而final的作用是保证变量不可变。看看网上的一个例子:

  公共类测试{

  公共静态void main(String[] args) {

  my class my class 1=new my class();

  my class my class 2=new my class();

  system . out . println(my class 1 . I);

  system . out . println(my class 1 . j);

  system . out . println(my class 2 . I);

  system . out . println(my class 2 . j);

  }

  }

  MyClass类{

  公共final double I=math . random();

  公共静态double j=math . random();

  }

  //运行结果,打印两次,J的值是一样的。j是静态类型,属于类,所以值两次都一样。不是静态的,因此属于对象,但I的值是不可变的。(学习视频分享:java视频教程)

  4.其他最终相关知识

  (1)使用final关键字,如果编译器可以在编译阶段确定某个变量的值,那么编译器会将该变量作为编译时常数使用。如果需要在运行时确定,那么编译器不会优化相关代码。

  公共类测试{

  公共静态void main(String[] args) {

  String a= hello2

  最终字符串b= hello

  String d= hello

  字符串c=b ^ 2;

  字符串e=D2;

  system . out . println((a==c));

  system . out . println((a==e));

  }

  }

  //final类型,可以在编译阶段确定值。

  //编译时无法确定非最终类型

  输出:

  真实的

  错误的

  公共类测试{

  公共静态void main(String[] args) {

  String a= hello2

  最终字符串b=get hello();

  字符串c=b ^ 2;

  system . out . println((a==c));

  }

  公共静态字符串getHello() {

  回‘你好’;

  }

  }

  //即使是最终类型,在编译阶段也无法确定值。True output (2)注意不要混淆final和finally、finalize()等。

  (3)将类、方法和变量声明为final可以提高性能,让JVM有机会估算,然后优化。

  (4)接口中的变量都是public static final。

  推荐:java面试问答

  原文链接:http://www.cnblogs.com/liun1994/p/6691094.html

  作者:一个90多岁的浪子就是面试官:请详细解释一下final关键字的作用以及它和static区别的细节。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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