java写一个含有简单常数的静态类,可以使用接口,让一个类实现该接口,就可以直接通过接口.变量访问,如下代码:
测试类代码:
package com.qiu.lin.he;
public class Ceshi implements CeshiStatic {
public static void main(String[] args) {
System.out.print(CeshiStatic.i);//直接使用该变量输出
}
}
接口类:
package com.qiu.lin.he;
public interface CeshiStatic {
public static int i = 0;//声明一个静态常数
}
运行结果如下:
对静态常量的操作不用new他的对象,类名.变量名就能直接调用,但是考虑到封装性,最好设置成private 然后用set get 方法。
所有项目中的常数放到一个类中其实是一个很糟糕的策略。面向对象的思维要求,谁的属性就应该在谁的对象里,完全可以在自己的对象了设置成static,而且多个对象操作同一个static数据 线程不是安全的,数据的可靠性也没法得到保证。当然如果用来系统初始化,只执行一次,这种方法还是可行的。
public class staticTest {
// 圆周率 常量 不可改变使用static final修饰 Math.PI时圆周率
//淡然可以使自己随便定义的其他的数了
private static final double π = Math.PI;
// 假设是圆的半径,这个可以改变,演示一下final和不是final的区别
private static double r=10;
public static double getR() {
return r;
}
public static void setR(double r) {
staticTest.r = r;
}
public static double get∏() {
return π;
}
}
public class test {
public static void main(String args[]){
//输出圆的面积
System.out.println(staticTest.get∏()*staticTest.getR()*staticTest.getR());
//输出修改过半径的圆的面积
staticTest.setR(1000);
System.out.println(staticTest.get∏()*staticTest.getR()*staticTest.getR());
}
}
一般有两种方法,一个用interface,另一个定义一个public final class。
interface里面的参数默认就是static的,可以直接定义成public int NUMBER = 0;这种。引用的时候就是接口名.NUMBER。
用public final class的目的是使得这个类不能被继承,里面的常量全部定义成public static final,或者如果只想有包访问权限,就定义成static final,比如static final int NUMBER = 0;引用的时候同样是类名.NUMBER。定义成static表明这个是静态变量,可以直接引用。
另外,常量变量一般全部是大写字母,中间用_分割,比如TOTAL_COUNT。同包内调用时不需要import该常量类。
final static int a=20;
导入这个语句所在的包