• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Jay_zhen
博客园    首页    新随笔    联系   管理    订阅  订阅
关键字 final → int* const p

final 可以用来修饰的结构:类、方法、变量

  1. 此修饰类不能被其他类所继承。比如:String类、System类、StringBuffer类
  2. 修饰的方法不可以被重写。比如:Object类中的getClass();
  3. 修饰的"变量"就称为是一个常量。
    修饰属性:显式初始化、代码块中初始化、构造器中初始化;static final 修饰属性时为 全局常量
    修饰局部变量:形参是一个常量,调用此方法时,给 常量形参 赋一个 实参 。一旦赋值后就只能在方法体内使用此形参,不能重新赋值。
package classobject.lzq06.staticfinal;
/**
 * @author Liuzhen
 * @create 2021-11
 */

public class FinalTest {

    static final int WIDTH = 0; //全局常量
    final int LEFT;
    final int RIGHT;

    {
        //代码块中初始化
        LEFT = 1;
    }

    public FinalTest(){
        RIGHT = 2;
    }

    public FinalTest(int n) {//构造器中初始化
        RIGHT = n;
    }


    public void doWidth(){
        //width = 20;编译错误,类可以直接调
    }

    public void show(){
        final int NUM = 10;//常量
        //NUM += 20; 编译错误,局部常量
    }

    public void show(final int num){
        //num = 20; 编译不通过
        System.out.println(num);//只能调用
    }

    public static void main(String[] args) {

        int num = 5;     //显示初始化

        System.out.println( FinalTest.WIDTH  ); // 0,类直接调用
        System.out.println();

        FinalTest test = new FinalTest();
        System.out.println( test.LEFT );   // 1
        System.out.println( test.RIGHT );  //2
        test.show(3);  //3
    }
}

类似指针常量 int * const p

C:指针变量不允许修改!指针指向一个地址该地址不能被修改,但该地址里的内容可以被修改
*p=7;//操作成功 p=&b;//操作错误
Java:不可以改变此对象的地址,但可以改变指向这个地址内存空间的值

package classobject.lzq06.staticfinal;


/**   
 * @author Liuzhen
 * @create 2021-11
 */
public class ConstP {
    public static void main(String[] args) {
        Fp fp = new Fp();
        new ConstP().addOne(fp);

    }

    public void addOne(final Fp fp){ //常量对象(地址)
        fp.i++;           //不可以改变此对象的地址,但可以改变指向这个地址内存空间的值
        System.out.println(fp.i);
    }
}

class Fp{
    public int i;
}

补充:常量指针 const int *p = &a;
本质是指针,并且这个指针是一个指向常量的指针,指针指向的变量的值不可通过该指针修改,但是指针 指向的值(地址)可以改变。
*p=7;//操作错误 p=&b;//操作成功

posted on 2021-12-29 10:08  Jay_zhen  阅读(61)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3