Java的final变量一例

本文详细解析了Java中final关键字用于修饰成员变量和局部变量时的使用限制,包括初始化规则、重复赋值等核心内容。通过具体代码示例,展示了final关键字在不同场景下的应用和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值