package com.june.study.final_test;
/**
* final的--成员--变量的限制:
* 1. 必须被显式初始化,默认值也不管用
* 2. 只要在用之前初始化完毕就行,(1)定义时就初始化,(2)在块中初始化,(3)在构造器中初始化
* 3. 初始化有且只有一次,上面的(1)(2)(3)不能重复初始化
*
* final的--局部--变量限制:
* 1. 如果不被用到,可以不初始化,不报错;否则同上
*
* @author lijg fantaxy025025@126.com
* @date Feb 25, 2010 12:45:54 PM
* @version V3.0
*/
public class FinalTest {
/**
* 这个块放在变量定义前也不报错
*/
{
i = 1;
s = "I am s";
//i3 = 33;//compile exception
i5 = 55;
}
final int i;
final int i2;
final int i3 =3;
//final int i4;//compile exception, must be initialized, the default value does not work here!
final String s;
final String s2;
final String s3 = "I am s3";
//final String s4;//compile exception must be initialized
int i5;
String s5;
/**
* 这个块证明可以对普通成员变量重复赋值
*/
{
i5 = 555;
s5 = "I am s5";
}
public FinalTest(){
i2 = 2;
s2 = "I am s2";
//s3 = "I am s33";//compile exception
}
public int sum(final int x, int y){
//x++;//compile exception
//x = x + y;//compile exception
y++;
y = y + x;
final int z;//no compile exception!如果这个变量不被用到,那么不报错!
final int m;
m = 1;
//m = 2;//compile exception duplicate init here
y = m + 1;
return x + y;
}
public static void main(String[] args) {
FinalTest o = new FinalTest();
}
}
Java的final变量一例
最新推荐文章于 2023-03-26 11:04:49 发布