Java常量(final, static final, public static final作用)

Java常量(final, static final, public static final作用)

final

在java中,使用final指示一个常量,一般常量的名称使用全大写,比如:

public class Demo {
    public static void main(String[] args) {
        final double PI = 3.14;
        double r = 2;
        double area = PI * r * r;
        System.out.println(area);
    }
}

使用final修饰的常量只能在当前方法中使用,不能在同一类的其他方法下使用,比如:

public class Demo {
    public static void main(String[] args) {
        final double PI = 3.14;
        double r = 2;
        double area;
        double cir;
        Demo1 demo1 = new Demo1();
        area = demo1.getArea(r);
        cir = demo1.getCir(r);
    }
    public double getArea(double r) {
        return PI * r * r;
    }
    public double getCir(double r) {
        return 2 * PI * r;
    }
}

会发现getAreagetCir方法中的PI报错,这个时候我们可以把定义的这条语句放到方法外部

public class Demo {
    final double PI = 3.14;
    public static void main(String[] args) {
        double r = 2;
        double area;
        double cir;
        Demo1 demo1 = new Demo1();
        area = demo1.getArea(r);
        cir = demo1.getCir(r);
    }
    public double getArea(double r) {
        return PI * r * r;
    }
    public double getCir(double r) {
        return 2 * PI * r;
    }
}

这个时候就可以正常运行了

static final

如上述所示,这时候我们的main函数就不能使用PI,因为main函数用了static修饰,是静态方法,所以要使用PI也要用static修饰,成为一个静态的常量

public class Demo {
    static final double PI = 3.14;
    public static void main(String[] args) {
        double r = 2;
        double area;
        double cir = 2 * PI * r;
        Demo1 demo1 = new Demo1();
        area = demo1.getArea(r);
    }
    public double getArea(double r) {
        return PI * r * r;
    }
}

public static final

在java中,使用public修饰的是公开资源,意味着其他包的类也可以使用这些方法或者变量等,所以使用public后其他包的类也可以调用PI来运算,比如(Demo1.java和Demo2.java不在同一包内):
Demo1.java

package upJava;

import com.sanJin.test.Demo2;

public class Demo1 {
    public static final double PI = 3.14;
    public static void main(String[] args) {
        double r = 2;
        double area;
        double cir;
        Demo2 demo2 = new Demo2();
        area = demo2.getArea(r);
        cir = demo2.getCir(r);
    }
}

Demo2.java

package com.sanJin.test;

import upJava.Demo1;

public class Demo2 {
    public double getArea(double r) {
        return Demo1.PI * r * r;
    }
    public double getCir(double r) {
        return 2 * Demo1.PI * r;
    }
}

首先Demo2要导入Demo1,这样Demo2就可以使用 类名.变量名 来调用Demo1定义的常量了,虽然Demo1定义常量,Demo2调用常量,Demo1又要用Demo2的方法,这种写法有些奇妙,不过这也是为了更好的演示
如果两个类在同一个包里,常量不需要public修饰,类也不需要import导入就可以相互之间调用,这么搞下来,我自己都要晕了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1594231563

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值