夏天的味道吉他谱,手机号码归属地查询及机主姓名,高清mtv网站
final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。 通常final定义的变量为常量。如:
import static java.lang.system.out; import java.util.random; class test{ int i = 0; } public class finaldata { static random rand = new random(); private final int value_1 = 9;//final定义的变量必须使用大写字母命名 private static final int value_2 = 10;//并且使用下划线进行连接; private final test test = new test(); private test test2 = new test(); private final int[] a = {1,2,3,4,5,6}; private final int i4 = rand.nextint(20); private static final int i5 = rand.nextint(20); public string tostring() { return i4 + "" + i5 + ""; } public static void main(string[] args) { finaldata data = new finaldata(); //data.test = new test(); //data.value_2++; data.test2 = new test(); for(int i=0; i<data.a.length; i++) { //a[i] = 9; } out.println(data); out.println("data2"); out.println(new finaldata()); out.println(data); } }
一个被定义为final的对象只能指向唯一一个对象,不可以将它指向其他对象,但是一个对象本身的值确实可以改变的,那么为了使一个常量真正做到不可更改,可以将常量说明为static final. 如下例:
import static java.lang.system.out; import java.util.random; public class finalstaticdata { private static random rand = new random(); private final int a1 = rand.nextint(10); private static final int a2 = rand.nextint(10); public static void main(string[] args) { finalstaticdata fdata = new finalstaticdata();//实例化一个对象 out.println("重新实例化对象调用a1的值:" + fdata.a1); out.println("重新实例化对象调用a2的值:" + fdata.a2); finalstaticdata fdata2 = new finalstaticdata();// 实例化新对象 out.println("重新实例化对象调用a1的值:" + fdata2.a1); out.println("重新实例化对象调用a2的值:" + fdata2.a2); } }
重新实例化对象调用a1的值:9
重新实例化对象调用a2的值:2
重新实例化对象调用a1的值:1
重新实例化对象调用a2的值:2
总结:
定义为final常量不是恒定不变的,将随机数赋予final的变量,可以做到每次运行程序时改变a1的值,但是a2被定义为static final形式,所以内存中为a2开辟了一个恒定的区域,当再次实例化一个fianlstaticdata对象时,仍然指向a2这块内存区域,所以a2的值保持不变。
技巧:
在java中定义全局常量,通常使用public static final修饰,这样的常量只能在定义时被赋值。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
浅析我对 String、StringBuilder、StringBuffer 的理解
使用IDEA搭建SSM框架的详细教程(spring + springMVC +MyBatis)
Springboot整合freemarker 404问题解决方案
引入mybatis-plus报 Invalid bound statement错误问题的解决方法
网友评论