精华内容
下载资源
问答
  • 2021-02-28 14:38:28

    一、接口中定义常量:

    由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量。public interface Constants{

    String name = "111";

    }

    public class read{

    public static void main(String[] args){

    System.out.println("Class Constants's name = " + Constants.name);

    }

    }

    由于引用了一个static final 的字段,编译器已经将interface Constants中name的内容编译进了class read中,而不是对其引用。因此只有重新编译class read,interface Constants中name发生的变化才能在class read中反映。

    二、类中定义public class Constants{

    private static final String name = "111";

    public static String getName(){

    return name;

    }

    }

    public class read{

    public static void main(String[] args){

    System.out.println("Class Constants's name = " + Constants.getName());

    }

    }

    class read中是对Constants class的getName()方法的引用,当常量name的值改变时我们只需对class Constants中的常量做修改并重新编译,无需编译class read。

    我们可以使用jdk提供的反编译工具javap反编译read.class看个究竟,输入:javap -c read即可查看两种方式的不同。

    更多相关内容
  • Java常量定义

    2021-01-20 03:44:48
    一、接口中定义常量:  由于java interface声明的字段在编译时会自动加上static final的修饰符,即声明为常量。  public interface Constants{  String name = 111;  }  public class read{  public ...
  • Java中常量定义的几种方式

    千次阅读 2021-02-12 09:18:04
    编程使用常量的优点:常量提取出来有利于代码阅读,而且下次再做这种判断不用手写或复制并且提高代码的复用率,方便修改,直接通过...1、Interface定义常量接口常量,写起来方便,看着简洁。 在接口可以通过内...

    编程中使用常量的优点:

    常量提取出来有利于代码阅读,而且下次再做这种判断不用手写或复制并且提高代码的复用率,方便修改,直接通过常量类就能得到。不过我觉得提取出来并不会有利于代码性能提升,因为常量分配在内存的常亮池中,所以内存不会出现多个相同常量字符串。总的来说提取常量主要是为了避免魔法数字和硬编码等,提高代码的可读性。

    1、Interface定义常量

    接口常量,写起来方便,看着简洁。 在接口中可以通过内部类来实现接口分类,这样代码就显得更简洁。

    /*** @program: java_demo

    * @description:

    *@author: Mr.Walloce

    * @create: 2019/06/18 15:14

    **/

    public interfaceinConstants {//响应状态成功

    public static final Integer REP_STATUS_SUCCESS = 200;//响应状态错误

    public static final Integer REP_STATUS_ERROR = 500;public classtestConstanA {public static final String TEST_CONSTANT_A = "a";

    }

    }

    2、Class定义常量

    采用“类.常量名”方法进行调用。需要私有化构造方法,避免创建该类的实例。同时不需让其他类继承该类。如果多处需要访问工具类中定义的常量,可以通过静态导入(static import)机制,避免用类名来修饰常量名。普通类中可以通过提供get的方法来提供调用。

    /*** @program: java_demo

    * @description:

    *@author: Mr.Walloce

    * @create: 2019/06/18 15:30

    **/

    public final classClazConstants {//私有构造方法

    privateClazConstants() {}public static final int ConstantA = 100;public static final int ConstantB = 200;

    }

    interface中定义常量方法生成的class文件比第一种方法的class文件更小, 且代码更简洁, 效率更高。

    以上接口和普通类实现的常量方式存在一些争议,具体的比较可以参考:Java Interface 是常量存放的最佳地点吗?

    3、Enum定义常量

    /*** @program: java_demo

    * @description:

    *@author: Mr.Walloce

    * @create: 2019/06/18 15:30

    **/

    public enumEnumConstants {

    MONDAY("MONDAY", "一"),

    TUESDAY("TUESDAY", "二"),

    WEDNESDAY("WEDNESDAY", "三"),

    THURSDAY("THURSDAY", "四"),

    FRIDAY("FRIDAY", "五"),

    SATURDAY("SATURDAY", "六"),

    SUNDAY("SUNDAY", "日");private finalString value;private finalString name;

    EnumConstants(String name, String value) {this.value =value;this.name =name;

    }publicString getValue() {returnvalue;

    }publicString getName() {returnname;

    }

    }

    常量和枚举的区别:

    常量中存在的缺点:

    ① 常量作为参数时,是String,int等弱类型,开发员传入没有在常量接口里定义的值,这个问题无法通过编译器发现;

    ② 由于开发员可以直接写常量值, 所以不能用==对比,只能用equals对比,不能优化性能;

    ③ 编译时,是直接把常量的值编译到类的二进制代码里,常量的值在升级中变化后,需要重新编译所有引用常量的类,因为里面存的是旧值。

    枚举的有点:

    ① 私有构造函数,避免被继承和扩展;

    ② 定义方法的参数时,必须用枚举常量类类型;

    ③ 常量值地址唯一,可以用==直接对比,性能会有提高;

    ④  编译时,没有把常量值编译到代码里,即使常量的值发生变化也不会影响引用常量的类;

    根据以上的优缺对比,显然得知枚举的方式更适合项目中使用。但是就以通常的写法来看,枚举的方式是最繁琐的,编程上不够简便。所以综上所述如果就便捷而言推荐使用Class的方式定义常量,若就性能和安全性来说推荐使用枚举的方式定义常量。

    参考内容:

    展开全文
  • java中只有static和非static变量,这个属于每个类的,如果需要全局变量比如PI(3.14...),可以写一个类Math,定义static变量PI,调用Math.PI就可以使用了,这样就达到我们使用全局变量的目的了
  • Java常量接口反模式 这篇文章最初发布在我的博客上: : 您如何在Java中定义和使用常量? Internet上的大多数建议具有以下意见: 为类的常量声明public static final 不要将接口用于常量 定义常量的最常见方法...
  • 常量 知识点:常量 含义:在程序执行过程,不可改变的量 分类: 1. 数字字面量:程序出现的数字 整数默认是int类型 小数默认是double类型 2. 字面值常量:使用双引号括起来的内容 ...

    目录

    什么是java常量?

    1. 整型常量

     2. 浮点数常量

    3. 字符常量

    4. 字符串常量

    5、布尔常量

    6、null常量

    定义常量

    常量三种类型:


    什么是java常量?

          java常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。

      下面我们就一起来看看java中的这些常量:

    1. 整型常量

      整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式具体表示形式如下。

      二进制:由数字0和1组成的数字序列。在JDK7.0中允许使用字面值来表示二进制数,前面要以0b或0B开头,目的是为了和十进制进行区分,如0b01101100、0B10110101。

      八进制:以0开头并且其后由0~7范围内(包括0和7)的整数组成的数字序列,如0342。

      十进制:由数字0~9范围内(包括0和9)的整数组成的数字序列。如198。

      十六进制:以0x或者0X开头并且其后由0~9、A~F(包括0和9、A和F)组成的数字序列,如0x25AF。

      需要注意的是,在程序中为了标明不同的进制,数据都有特定的标识,八进制必须以0开头,如0711,0123;十六进制必须以0x或0X开头,如0xaf3、0Xff;整数以十进制表示时,第一位不能是0,0本身除外。例如十进制的127,用二进制表示为011111八进制表示为017,用十六进制表示为0x7F或者0X7F。

     2. 浮点数常量

      浮点数常量就是在数学中用到的小数,分为foat单精度浮点数double双精度浮点数两种类型。其中,单精度浮点数后面以F或f结尾,而双精度浮点数则以D或d结尾。当然,在使用浮点数时也可以在结尾处不加任何的后缀,此时虚拟机会默认为double双精度浮点数。浮点数常量还可以通过指数形式来表示。具体示例如下:

     2e3f 3.6d 0f 3.84d 5.022e+23f

    3. 字符常量

      字符常量用于表示一个字符,一个字符常量要用一对英文半角格式的单引’’号引起来,它可以是英文字母、数字、标点符号以及由转义序列来表示的特殊字符。具体示例如下:

    ‘a’ ‘1’ ‘&’ ‘\r’ ‘\u0000’

      上面的示例中,’\u00’表示一个空白字符,即在单引号之间没有任何字符。之所以能这样表示,是因为Java采用的是Unicode字符集,Unicode字符以\u开头,空白字符在Unicode码表中对应的值为’\u0000’。

    4. 字符串常量

      字符串常量用于表示一串连续的字符,一个字符串常量要用一对英文半角格式的双引号””引起来,具体示例如下:

    “HelloWorld" “123" "We come \n XXX" "”

      一个字符串可以包含一个字符或者多个字符,也可以不包括任何字符,即长度为零

    5、布尔常量

      Java 的布尔型常量只有两个值,即 false(假)和 true(真)。

    6、null常量

      null常量只有一个值null,表示对象的引用为空。

    定义常量

    常量不同于常量值,它可以在程序中用符号来代替常量值使用,因此在使用前必须先定义。常量与变量(在《Java变量的声明和初始化》一节中讲解)类似也需要初始化,即在声明常量的同时要赋予一个初始值。常量一旦初始化就不可以被修改。它的声明格式为:

    Java 语言使用 final 关键字来定义一个常量,其语法如下所示:

    final dataType variableName = value

    其中,final 是定义常量的关键字dataType 指明常量的数据类型variableName 是变量的名称value初始值

    final 关键字表示最终的,它可以修改很多元素,修饰变量就变成了常量。例如,以下语句使用 final 关键字声明常量。

    public class HelloWorld {
        // 静态常量
        public static final double PI = 3.14;
        // 声明成员常量
        final int y = 10;
    
        public static void main(String[] args) {
            // 声明局部常量
            final double x = 3.3;
        }
    }

    常量三种类型:

    常量有三种类型:静态常量成员常量局部常量

    代码第 3 行的是声明静态常量,使用在 final 之前 public static 修饰。public static 修饰的常量作用域是全局的,不需要创建对象就可以访问它,在类外部访问形式为 HelloWorld. PI。这种常量在编程中使用很多。

    代码第 5 行声明成员常量,作用域类似于成员变量,但不能修改。代码第 9 行声明局部常量,作用域类似于局部变量,但不能修改。

    在定义常量时,需要注意如下内容:

    • 在定义常量时就需要对该常量进行初始化。
    • final 关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。
    • 为了与变量区别,常量取名一般都用大写字符。

    当常量被设定后,一般情况下不允许再进行更改,如果更改其值将提示错误。例如,如下图中定义常量 AGE 并赋予初值,如果更改 AGE 的值,那么在编译时将提示不能重合赋值错误。

    展开全文
  • 初步整理的java常量变量的概念,十分粗浅,只是将简单的概念整理了出来,在使用过程还需要慢慢累积和理解其中的更深含义
  • JAVA中定义常量方法

    千次阅读 2021-02-12 09:17:53
    JAVA中定义常量方法(2013-01-28 14:30:19)标签:it一、常量定义的基本注意事项。在Java语言,主要是利用final关键字(在Java灵活使用Static关键字)来定义常量。当常量被设定后,一般情况下就不允许再进行更改。...

    JAVA中定义常量方法

    (2013-01-28 14:30:19)

    标签:

    it

    一、常量定义的基本注意事项。

    在Java语言中,主要是利用final关键字(在Java类中灵活使用Static关键字)来定义常量。当常量被设定后,一般情况下就不允许再进行更改。如可以利用如下的形式来定义一个常量:final

    double PI=3.1315。在定义这个常量时,需要注意如下内容:

    一是常量在定义的时候,就需要对常量进行初始化。也就是说,必须要在常量声明时对其进行初始化。都跟局部变量或者成员变量不同。当在常量定义的

    时候初始化过后,在应用程序中就无法再次对这个常量进行赋值。如果强行赋值的话,数据库会跳出错误信息,并拒绝接受这一个新的值。(接口中定义的常量的访问方法)

    二是final关键字使用的范围。这个final关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。如数组就是一

    个对象引用。为此可以使用final关键字来定义一个常量的数组。这就是Java语言中一个很大的特色。一旦一个数组对象被final关键字设置为常量数

    组之后,它只能够恒定的指向一个数组对象,无法将其改变指向另外一个对象,也无法更改数组(有序数组的插入方法可使用的二分查找算法)中的值。

    三是需要注意常量的命名规则。不同的语言,在定义变量或者常量的时候,都有自己一套编码规则。这主要是为了提高代码的共享程度与提高代码的易读

    性。在Java语言中,定义常量的时候,也有自己的一套规则。如在给常量取名的时候,一般都用大写字符。在Java语言中,大小写字符是敏感的。之所以采

    用大写字符,主要是跟变量进行区分。虽然说给常量取名时采用小写字符,也不会有语法上的错误。但是,为了在编写代码时能够一目了然的判断变量与常量,最好

    还是能够将常量设置为大写字符。另外,在常量中,往往通过下划线来分隔不同的字符。而不想对象名或者类名那样,通过首字符大写的方式来进行分隔。这些规则

    虽然不是强制性的规则,但是为了提高代码友好性,方便开发团队中的其他成员阅读,这些规则还是需要遵守的。没有规矩,不成方圆。

    总之,Java开发人员需要注意,被定义为final的常量需要采用大写字母命名,并且中间最好使用下划线作为分隔符来进行连接多个单词。在定义final的数据不论是常量、对象引用还是数组,在主函数中都不可以改变。否则的话,会被编辑器拒绝并提示错误信息。

    二、Final关键字与static关键字同时使用。

    由于Javal是面向对象的语言,所以在定义常量的时候还有与其它编程语言不同的地方。如一段程序代码从编辑到最后执行,即使需要经过两个过程,分别为代码的装载与对象的建立。不同的过程对于常量的影响是不同的。现在假设有如下的代码:

    Private static Random rd1=new Random(); //实例化一个随机数生成对象。

    Private final int int1=rd1.nestInt(10); //生成随机数并赋值给常量int1

    Private static final int int2=rd1.nestInt(10);

    //生成随机数并赋值给常量int2

    这上面的语句的大致含义是,通过Java语言提供的随机数类对象,生成随机数。并把生成的随机数赋值给常量int1与int2。细心的读者会发

    现,虽然同样是赋值语句,但是以上两个语句中有一个细小的差别,即在第二条语句中多了一个关键字static。关于关键字的用途,笔者在以前的文章中也有

    谈到过。这个是一个静态的概念。即当利用这个关键字来修饰一个变量的时候,在创建对象之前就会为这个变量在内存中创建一个存储空间。以后创建对对象如果需

    要用到这个静态变量,那么就会共享这一个变量的存储空间。也就是说,在创建对象的时候,如果用到这个变量,那么系统不会为其再分配一个存储空间,而只是将

    这个内存存储空间的地址赋值给他。如此做的好处就是可以让多个对象采用相同的初始变量。当需要改变多个对象中变量值的时候,只需要改变一次即可。从这个特

    性上来说,其跟常量的作用比较类似。不过其并不能够取代常量的作用。

    分享:

    a4c26d1e5885305701be709a3d33442f.png喜欢

    0

    a4c26d1e5885305701be709a3d33442f.png赠金笔

    加载中,请稍候......

    评论加载中,请稍候...

    发评论

    登录名: 密码: 找回密码 注册记住登录状态

    昵   称:

    评论并转载此博文

    a4c26d1e5885305701be709a3d33442f.png

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    展开全文
  • Java常量定义方法汇总

    千次阅读 2021-03-04 03:24:56
    Java常量定义方法汇总时间:2017-06-13来源:华清远见JAVA学院实际工作开发,我们经常会使用到常量。那么Java常量如何定义呢?Java常量定义的规范是什么?定义Java常量又有哪些注意事项呢?今天华清Java学院小编整理...
  • java中interface中定义变量都是"public static final" 类型的, 也就是常量, 因此很多人在interface定义常用的常量(这也是本人偏爱的方式); 由此却引起了不少风波, 网上关于此问题的讨论也非常多, 下面...
  • java常量定义规范

    2022-02-12 12:29:04
    1. 不允许出现任何魔法值( 即未经定义常量) 直接出现在代码。 反例: String key="Id#taobao_"+tradeId; cache.put(key, value); 2. long 或者 Long 初始赋值时,必须使用大写的 L,不能是小写的 l,小写...
  • 主要介绍了Java变量常量声明和定义原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Java中定义常量的几种方法

    千次阅读 2019-05-02 14:52:43
    Class定义常量方法(推荐方法) //final修饰符 public final class Constants { //私有构造方法 private Constants() {} public static final int ConstantA = 100; public static final int ConstantB = 100...
  • java常量定义总结 转载

    千次阅读 2021-02-12 18:33:04
    一、常量定义的基本注意事项在Java语言,主要是利用final关键字(在Java类灵活使用Static关键字)来进行Java常量定义。当常量被设定后,一般情况下就不允许再进行更改。在定义常量时,需要注意如下内容:一是Java...
  • Java中如何定义Map常量、List常量呢?

    千次阅读 2022-04-27 23:40:57
    一、在Java中定义Map常量 1、使用静态代码块: public static final Map map = new HashMap(); static { map.put("key1", "value1"); map.put("key2", "value2"); } 2、简单定义Map常量 public static ...
  • /**** @author YZJ* @Description java中定义常量的最佳方法*/public final class Contants{/*** @Description 私有化构造方法*/private Contants(){};public static final int contants1 = 1<<1;public ...
  • 展开全部在Java语言,主要是利用final关键字(在Java灵活使用Static关键字)来定义常量常量被设定后,一般情32313133353236313431303231363533e59b9ee7ad9431333365633864况下就不允许再进行更改。如可以利用...
  • 在任何开发语言,都需要定义常量。在Java开发语言平台也不例外。...一、常量定义的基本注意事项在Java语言,主要是利用final关键字(在Java类灵活使用Static关键字)来进行Java常量定义。当常量被设定...
  • 如何在Java中定义常量

    千次阅读 2021-02-12 20:22:24
    围绕JAVA中常量主题似乎存在很多混淆,有的人使用整数或字符串来定义常量,而有的人则使用枚举。我还遇到了在自己的接口中定义常量 —— 使用常量的类必须实现接口。该策略通常被称为界面常量设计模式。在本文...
  • Java中定义常量字符串?

    千次阅读 2021-03-08 02:11:34
    我有一个常量字符串列表,需要在Java程序的不同时间显示它们。在C语言,我可以在代码顶部定义以下字符串:#define WELCOME_MESSAGE"Hello, welcome to the server"#define WAIT_MESSAGE"Please wait 5 seconds"#...
  • 本文为大家介绍一下java接口中定义常量的访问方法,希望对大家有帮助。
  • 在任何开发语言,都需要定义常量。在Java开发语言平台也不例外。...一、常量定义的基本注意事项在Java语言,主要是利用final关键字(在Java类灵活使用Static关键字)来进行Java常量定义。当常量被设定...
  • 一般的方式的使用静态代码块。比如:public final static Map map = new HashMap();static {map.put("key1", ...}下面为一种简单定义Map常量的方式public final static Map NAV_ITEM_ADPTER = new HashMap() {{put...
  • Class定义常量方法(推荐方法)//final修饰符public final class Constants {//私有构造方法private Constants() {}public static final int ConstantA = 100;public static final int ConstantB = 100;......}采用...
  • java map常量定义

    千次阅读 2018-11-22 20:36:00
    Java中定义Map常量,List常量 一般的方式的使用静态代码块。比如: 1 2 3 4 5 publicfinalstaticMap map =newHashMap(); static...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 368,352
精华内容 147,340
关键字:

java中常量的定义

java 订阅