2024-11-30 11:38:30
以友圆上该类常量野告陪是该类对象的属性是不对的,属性只有在定义封装后set和get方法才出现的。只能说是该对象的成颂蠢员字段。
如何在Java中定义常量
java没有叫全局变量的东西(有全局变量还叫OO吗?);原因:Java将所有设计都基于对象的基础上。Java的全局变量只能对一个类内部而言。能够在类内的任何地方使用的变量就是全局变量,而只在某个特定的函数或者局部的程序块内使用的变量则是局部变升数枣量。
所以:声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。
使用:java中只有static和非static变量,这个属于每个类的,如果需要全局变量比如PI(3.14...),可以写一个类Math,定义static变量PI,调用Math.PI就可以使用了,这样就达到我们使用全局变量的目的了。
1、将一个package中需要的常量集中到一个XyzConstants之类的interface里声明,
就像普通的field那样声明就行了。
复制代码代码如下:
publicinterfaceSomeConstants{
publicintPORT=80;
publicStringIP="166.111.16.1";
publicbooleantest=true;
}
就可以。
用到常量的类implements这个接口..简单情况这样就行乐。
2、更formal的做法是写一个类维护所有的常量,负责从配置文件(例如properties文件或xml文件)读取所有的常量的值。
可以在一个static{}块里毕姿从配置文件中初始化所有static的变量。这样有利于提高软件的可配置性。改些东东不用动代码,比较好。
最好要有configTool负责写配置文件。
3.其他说明:
定义一个公开类,在里面加static变量。
复制代码代码如下:
publicclassinfos{
privateinfos(){
}
publicstaticintPORT=80;
publicstaticStringIP="166.111.166.111";
publicstaticbooleantest=true;
publicstaticfinalStringMYNAME="zzz";//定义中用了final,就是不能吵拆改变的。
}
在别的class中调用这些变量就是:infos.PORT,infos.IP,infos.test,infos.MYNAME
多个class交互时可以通过改变这些变量的值来传递信息。比如infos.test被别的class改成了false,可能表示某一件事已经失败或已经做过,其它class就可以提前知道这些信息。
其中infos.MYNAME被定义为了final,即成为常量。用final修饰的成员变量表示常量,值一旦给定就无法改变!望采纳
java中有关常量的问题举例:
publicclassTest{
publicfinalinta=1;
publicfinalstaticintA=1;
}
想的到a的值,方法是:
新建皮丛陵一个Test对象,然后得到其属性值,即:
Testt=newTest();
intvalue=t.a;
想得到A的值,方法是:
直接用类名得到,即:
intvalue=Test.A;
也就是说,像a这种普通属性的值,要通过对象来得到;而相A这种静态(带static)的属性,则要通过类名来得到。
注意:例子中的a写成了public的,仅仅是用来说明普通属性和郑厅静态燃戚属性的区别,真正写类时,普通属性要写成private的,然后通过get方法来得到,即:
publicclassTest{
privateinta;
publicintgetA(){
returna;
}
}
使用getA()方法,即可得到a的值了;
而静态属性则写成public的。