您的位置:首页 > 编程语言 > Java开发

java的final变量浅析

2017-09-21 16:26 141 查看
final关键字可修饰类、方法、变量(包括成员变量和局部变量)。

1、修饰类
final修饰类,说明被修饰的类不可以被继承,同样final修饰的类里面的成员方法均为final方法。值得注意一下,String类就是一个final类。



2、修饰方法
final修饰方法,说明被修饰的方法不可以重载,防止被继承的类修改该方法。

注:private方法会隐式的指向final方法。

3、修饰变量
final修饰变量,所修饰的变量分为java8种基本类型和引用型变量。修饰基本变量,则变量的值不可改变,修饰引用型变量,则变量的引用地址不变,但是引用的地址所存储的值是可以改变的。



4、测试final修饰变量

/**
* 测试类
*
*/
public class FinalTest {

public final int a=0;//基本类型初始值
public final String b = "b";//String类型初始值

public static void main(String[] args) {
FinalTest test =new FinalTest();
FinalTest3 finalTest3 = new FinalTest3();//引用型变量
finalTest3.setA(test.a);
finalTest3.setB(test.b);

System.out.println("最初值:");
System.out.print(test.a+" "+test.b+" "+finalTest3.getA()+" "+finalTest3.getB());
System.out.println();

FinalTest2 finalTest2 = new FinalTest2();
finalTest2.changeFinal(test.a);//修改基本类型变量
finalTest2.changeFinal(test.b);//修改String类型变量
finalTest2.changeFinal(finalTest3);//修改引用型变量

System.out.println("更改后值:");
System.out.print(test.a+" "+test.b+" "+finalTest3.getA()+" "+finalTest3.getB());
System.out.println();
}
}

/**
* 更改变量类
*
*/
public class FinalTest2 {

public void changeFinal(int a){
a = a+1;
}
public void changeFinal(String a){
a = a+"1";
}
public void changeFinal(FinalTest3 a){
a.setB("change");
a.setA(12345);
}

}
/**
* 引用型变量的类
*
*/
public class FinalTest3 {

public int a;
public String b;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
}


执行结果:



从结果可以印证final修饰变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java