首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【小家javajava中维护常量使用常量类?接口?还是枚举呢?

但是,但是,但是不建议在接口中定义常量。...因为我在阅读《Effective Java》这本书中提到过: 如果某个实现了常量接口的类被修改不再需要常量了,也会因为序列化兼容原因不得不保持该实现,而且非final类实现常量接口会导致所有子类被污染...所以我个人推荐:接口中的常量, 不应该用于全局....《Effective Java》中也是推荐使用枚举代替int常量的。...枚举当然是首选,另如果不用枚举,在《Effective Java》一书中,作者建议使用一般类加私有构造方法的方式,至于为什么不用接口,那就要上升到语言哲学问题了(可参考上面通俗易懂的话)。

3.4K21

Java常量接口思考,项目中的常量是放在接口里还是放在类里呢?

最近在看一本书 Java与模式,里面提了一句不建议使用常量接口,甚至举了个java源码的反例, 蛋疼的是没有说为什么? 查了网上一圈发现他们也是知道怎么做而不知道为什么这么做。...第一 常量类应该是final,不变的,而接口里的参数是final,也是不变的。 那么,看起来接口是放常量没有一定问题,还省去了final的输入,非常的合适。...但是,类是只能单继承的,接口是允许多实现的。 要是类实现的多个接口出现重名的常量,会报错,必须要在实现类明确常量用的是哪个接口的。...第二 如果某个实现了常量接口的类被修改不再需要常量了,也会因为序列化兼容原因不得不保持该实现,而且非final类实现常量接口会导致所有子类被污染。...总结 接口是定义类型的,而不应该用于导出常量常量接口不建议使用,应使用常量类。

2K11
您找到你想要的搜索结果了吗?
是的
没有找到

常量接口 vs 常量类 vs 枚举区别

常量定义在接口里与类里都能通过编译,那2者到底有什么区别呢? 那个更合理?...final String CONST_C = "cc"; } 存在问题: 无法限制开发人员, 继承/实现接口 开发人员能够在子接口里继续添加常量,而这些常量可能得不到祖先层的支持 常量作为参数时, 是...String, int 等弱类型, 开发人员可以传入没有在常量接口里定义的值, 这个问题无法通过编译器发现 由于开发人员可以直接写常量值, 所以不能用 == 对比, 只能用 equals 对比, 不能优化性能...但是其他问题与常量接口一样无法解决 枚举常量类 public class EnumClassA { private String name; private EnumClassA(String...查看 enum 反编译后的代码与枚举常量类的结构非常相似 这可能是因为 java 的设计者一开始觉得 enum 与 OO 思想不符 所以没有提供支持, 但是随着常量接口的滥用和枚举常量类方案的出现 才在

14330

JAVA 常量

常量 3.1 常量概述 常量 : 在程序运行过程中,其值不可发生改变的量 3.2 Java中的常量分类: ​ 字符串常量 用双引号括起来的多个字符(可以包含0个、一个或多个),例如”a”、”abc”、...”中国”等 ​ 整数常量 整数,例如:-10、0、88等 ​ 小数常量 小数,例如:-5.5、1.0、88.88等 ​ 字符常量 用单引号括起来的一个字符,例如:’a’、’5’、’B’、’中’等 ​...布尔常量 布尔值,表示真假,只有两个值true和false ​ 空常量 一个特殊的值,空值,值为null 除空常量外,其他常量均可使用输出语句直接输出。...3.3 代码 /* 常量: 在程序运行过程中,其值不可以发生改变的量。 常量分类: 字符串常量: 用双引号括起来的内容。"...HelloWorld","黑马程序员" 整数常量: 不带小数的数字。666,-88 小数常量: 带小数的数字。13.14,-5.21 字符常量: 用单引号括起来的内容。'

62120

java常量

JAVA变量与常量 常量 常量常量 常量的声明定义 常量 常量在c语言编程网中的定义是指在程序的整个运行过程中值保持不变的量。...在这里要注意常量常量值是不同的概念,常量值是常量的具体和直观的表现形式,常量是形式化的表现。...这里体现出常量值这一定义,我认为的常量值就是值,具体的某一数值 百度出来的常量是定义为两种意思:一是不可变的变量,也是最最最开始接触java知道的,二如上。...平时所说的值指的是常量值,常量是不可变的变量(用final修饰的变量) 常量值 提到常量值不得不说一下计数法,八进制、十进制、十六进制所代表的进制计数法跟科学计数法,这几个是在值体现中可以直观看到的。.../article/details/53672573) 常量的声明定义 语法: final 数据类型 变量名=值;//使用final关键字声明常量 示例: public class HelloJAVA {

61930

java变量、常量

Java是一种面向对象的编程语言,其中变量和常量是构建程序的基础。变量可以用来存储数据值,而常量是不能被修改的值。在本文中,我们将深入探讨Java中变量和常量的概念、类型、声明、作用域和示例等方面。...在Java中,每个变量都有一个类型和一个名称。变量的值可以在程序执行过程中更改。类型在Java中,变量可以分为两种类型:基本类型和引用类型。基本类型基本类型是指不依赖于任何其他类型的数据类型。...常量概念常量是指在程序执行过程中不能更改的值。在Java中,常量通常用来存储一些固定的值,例如π的值或常量字符串。常量的值不能被修改或重新分配。在Java中,使用关键字final来定义常量。...由于x是一个常量,我们无法在后续的代码中修改其值。常量命名规范在Java中,通常使用大写字母表示常量,以便区分变量和常量。...示例下面是一个示例,演示了如何在Java中使用变量和常量:public class MyClass { int x = 5; // 全局变量 final int y = 10; // 全局常量

84710

integer常量池在哪_java 常量

目录 常量池 Integer a= 127 与 Integer b = 127相等吗 ---- 常量java中存在字符串常量池,维护了所有String对象 使用String s=”zx”的时候是使用...String.valueOf(“zx”)从常量池中找了个对象返回 如果不存在则将内容放入常量池中 在使用new的时候是直接创建一个新的对象在堆中 Integer中也有常量池 其中缓存了-128到127之间的数字...如果整型字面量的值在-128 到 127 之间,那么自动装箱时不会 new 新的Integer 对象,而是直接引用Integer常量池中的 Integer 对象,超过范围 a1==b1...System.out.println(b == c); // true //如果整型字面量的值在-128到127之间, //那么自动装箱时不会new 新的Integer 对象, //而是直接引用常量池中的

86220

java常量有哪些_Java中的常量有哪些?

JAVA常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。那么java常量有哪些呢?在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。...下面我们就一起来看看java中的这些常量。 1.整型常量 整型常量是整数类型的数据,有二进制、八进制、十进制和十六进制4种表示形式具体表示形式如下。 二进制:由数字0和1组成的数字序列。...之所以能这样表示,是因为Java采用的是Unicode字符集,Unicode字符以u开头,空白字符在Unicode码表中对应的值为’u0000’。...以上就是动力节点java学院小编针对“Java中的常量有哪些?”...的内容进行的回答,希望对大家有所帮助,如果对于学习Java的学习计划,怎么学才有效率,或者学完如果找工作的问题,请在线咨询,有专业老师随时为你服务。

4.3K30

Java (三) 常量

今天我们来记录一下java基础之常量,虽然这个很简单很简单,但是我还是喜欢记录下来,因为什么东西都是由开始的不会转变过来的,慢慢的积累最后都是财富,也能做到温故而知新,所以我也会坚持不管多简单或者多难。...常量:程序在执行过程中其值是不可以改变的量叫做常量。 2.Java中的常量Java常量是分两种的一种是字面值常量一种是面向对象常量,今天我要记载的是字面值常量。...3.字面值常量: 1).字符串常量 :双引号内包括的内容,特点是双引号内。...下面让我们来用代码测试一下:字符串常量,整数常量,小数常量 5.下面让我们来用代码测试一下:布尔常量 6.假如我们把布尔常量单词书写错误,在看看效果。...(是会报错的) 7.可以看出“布尔常量”单词是不可以书写错误的,下面让我们来用代码测试一下:字符常量 8.下面我们把“字符常量” 多写几种不同的形态 9.我们会发现“字符常量” :单引号内自能存放一个字符

32110

java常量池在方法区还是堆_JAVA常量

=> Java堆 Class statics => Java Heap //类statics => Java堆 结论:jdk1.7的时候,常量池已经被安排在堆里面了。...然后紧跟着两个可变大小的 vtable 和 itable,前者由类中方法的数量决定,后者由这个类所实现接口的方法数量决定。...JAVA的三种常量池 此外,Java有三种常量池,即字符串常量池(又叫全局字符串池)、class文件常量池、运行时常量池。 1....每个类都有一个运行时常量池 3. class文件常量池(class constant pool) class常量池是在编译后每个class文件都有的,class文件中除了包含类的版本、字段、方法、接口等描述信息外...卧槽,接口还在,只是实现类变了。 最开始的实现叫PermGen,后来是PermGen + java heap 一起实现,现在叫Metaspace + Java heap 一起协调工作。

2.7K20

触摸Java常量

java常量池是一个经久不衰的话题,也是面试官的最爱,题目花样百出,这次好好总结一下。 理论 先拙劣的表达一下jvm虚拟内存分布: ?...虚拟机栈是jvm执行java代码所使用的栈。 方法区存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。 虚拟机堆是jvm执行java代码所使用的堆。...Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。...前文提到过,class文件中存在一个静态常量池,这个常量池是由编译器生成的,用来存储java源文件中的字面量(本文仅仅关注字面量),假设我们有如下java代码: 1 String s = "hi"; 为了方便起见...参考文献:《深入理解java虚拟机———jvm高级特性与最佳实践》

1.1K10

java常量的定义

Java语言中,主要是利用final关键字来定义常量。当常量被设定后,一般情况下就不允许再进行更改。如可以利用如下的形式来定义一个常量:final double PI=3.1315。...这个final关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。如数组就是一个对象引用。为此可以使用final关键字来定义一个常量的数组。这就是Java语言中一个很大的特色。...不同的语言,在定义变量或者常量的时候,都有自己一套编码规则。这主要是为了提高代码的共享程度与提高代码的易读性。在Java语言中,定义常量的时候,也有自己的一套规则。...如在给常量取名的时候,一般都用大写字符。在Java语言中,大小写字符是敏感的。之所以采用大写字符,主要是跟变量进行区分。虽然说给常量取名时采用小写字符,也不会有语法上的错误。...总之,Java开发人员需要注意,被定义为final的常量需要采用大写字母命名,并且中间最好使用下划线作为分隔符来进行连接多个单词。

86130

Java常量池(静态常量池与运行时常量池)

今天说一说Java常量池(静态常量池与运行时常量池)[通俗易懂],希望能够帮助大家进步!!! 1、什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变!...final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。...,包括了如下三种类型的常量: 类和接口的全限定名; 字段名称和描述符; 方法名称和描述符 Java中八种基本类型的包装类的大部分都实现了常量池技术,它们是Byte、Short...如果类存在父类,则除非子类覆盖了父类的字段定义,否则在子类中不会列出从超类或父接口中继承而来的字段,但有可能列出原来java代码中不存在的字段,譬如在内部类为了保持对外部类的访问性,会自动添加指向外部类实例的字段...运行时常量池相对于CLass文件常量池的另外一个重要特征是具备动态性,Java语言并不要求常量一定只有编译期才能产生,也就是并非预置入CLass文件中常量池的内容才能进入方法区运行时常量池,运行期间也可能将新的常量放入池中

1.9K21

Java中的常量

4.1 概述 常量值又称为字面常量,它是通过数据直接表示的,因此有很多种数据类型,像整型和字符串型等。通常是指在Java程序中固定不变的数据。...4.2 分类 image.png 整型常量Java 的整型常量值主要有如下 3 种形式。 十进制数形式:如 54、-67、0。...实型常量Java 的实型常量值主要有如下两种形式。 十进制数形式:由数字和小数点组成,且必须有小数点,如 12.34、-98.0。...Java 实型常量默认在内存中占 64 位,是具有双精度型(double)的值。...布尔型常量Java 的布尔型常量只有两个值,即 false(假)和 true(真)。 4.3 定义 常量不同于常量值,它可以在程序中用符号来代替常量值使用,因此在使用前必须先定义。

85620
领券