草庐IT

常量池

全部标签

java - 关于Java字符串常量池

这是关于Java字符串常量池的。在我的一个程序中,我正在解密数据库的密码并将其存储在一个字符串中。我听说Java字符串将存储在常量池中,并且它们不会在VM重新启动或加载字符串的类加载器退出时被销毁。如果是这种情况,我的密码将存储在字符串池中。我非常关心这个问题。有没有其他方法可以销毁这些文字或我能做的任何其他事情。请对此提出建议,问候,晴天。 最佳答案 这里有几个不同的问题。首先,术语“常量池”是指字符串和数字文字的类文件中非常具体的部分,或者是指从驻留在JVM中的类文件的这一部分生成的数据结构。密码不会存储在这里,除非它们是类文件

c# - 单例和常量

我正在制作一个使用几个常量的程序。起初,每次我需要使用常量时,我​​都会将其定义为//C#privatestaticreadonlyintMyConstant=xxx;//JavaprivatestaticfinalintMyConstant=xxx;在我需要它的类里面。一段时间后,我开始意识到不止一个类需要一些常量。此时,我有3个选择:在需要它的不同类中定义它们。这导致重复。如果以后由于某种原因我需要更改其中一个,我必须checkin所有类以在所有位置替换它们。定义一个静态类/单例,所有常量都是公共(public)的。如果我在ClassA、ClassB和ClassC中需要一个常量X,

java - 常量有正式定义吗?

Java规范是定义了常量的原则,还是留给推荐的角色?如果在规范中有定义,它的定义是什么?具体来说,以下任何或所有示例是否被视为常量?如果部分或全部确实如此,它们是否被视为符合规范或任何其他官方建议?publicstaticfinalintONE=1;publicstaticfinaldoubleTWO=2.0d;publicstaticfinalStringTHREE="three";publicstaticfinalImmutableListONE_TWO_THREE=ImmutableList.of(1,2,3);publicstaticfinalLoggerlogger=LogM

java - 为什么Java枚举常量初始化不完整?

我偶然发现了一个非常奇怪的错误,我无法解释它发生的原因。想象一下以下枚举:importjava.awt.Color;publicclasstest{/***@paramargs*/publicstaticvoidmain(String[]args){System.out.println(MyEnum.CONSTANT1.get());System.out.println(MyEnum.CONSTANT2.get());}privateenumMyEnum{CONSTANT1(staticMethod1()),CONSTANT2(staticMethod2());privatestati

java - 涉及魔数(Magic Number)的全局常量的最佳实践

为了避免魔数(MagicNumber),我总是在我的代码中使用常量。在过去,我们曾经在无方法的接口(interface)中定义常量集,现在已经成为一种反模式。我想知道最佳做法是什么?我说的是全局常量。枚举是在Java中存储常量的最佳选择吗? 最佳答案 对于实际数字有意义而不仅仅是标签的魔数(MagicNumber),您显然不应该使用枚举。那么老款还是最好的。publicstaticfinalintPAGE_SIZE=300;当您只是标记某些东西时,您会使用枚举。enumDrink_Size{TALL,GRANDE,VENTI;}有时

java - 计算 java.util.hash 的 hashcode 值时使用的常量说明

谁能解释这些常量的意义以及选择它们的原因?staticinthash(inth){//ThisfunctionensuresthathashCodesthatdifferonlyby//constantmultiplesateachbitpositionhaveabounded//numberofcollisions(approximately8atdefaultloadfactor).h^=(h>>>20)^(h>>>12);returnh^(h>>>7)^(h>>>4);}来源:java-se6库 最佳答案 理解什么是好的哈希函

Java:访问枚举(enum)中的常量

阅读SCJP书,我在第1章“自测”中发现了类似的内容:enumAnimals{DOG("woof"),CAT("meow"),FISH("burble");Stringsound;Animals(Strings){sound=s;}}classTestEnum{staticAnimalsa;publicstaticvoidmain(String[]args){System.out.println(a.DOG.sound+""+a.FISH.sound);//thefollowinglineisfrommeSystem.out.println(Animals.DOG.sound+""+A

java - 注释属性必须是类文字?为什么?常量也应该没问题

有人可以解释为什么String和Class注释参数的预期不同吗?为什么编译器需要类的文字,同时也接受字符串的常量?使用Spring的@RequestMapping的工作示例:publicclassMyController{publicstaticfinalStringREQUEST_MAPPING="/index.html";@RequestMapping(MyController.REQUEST_MAPPING)//ALLOK!...}带有TestNG的@Test的WTF示例:publicclassMyControllerTest{publicstaticfinalClassTEST

java - 为什么注释属性的值应该是常量表达式?

我有以下代码@UIUnitTimeout(8*60*1000)//works@UIUnitTimeout(TimeUnit.MINUTES.toMillis(8))//doesnotwork我知道根据JLS,只允许常量表达式作为注释属性的值。但为什么?为什么数据类型匹配还不够?如果要在运行时评估表达式,是否有任何可能出错的地方?每个规范背后都有逻辑推理吗? 最佳答案 注解就像类型扩展或关于类型的元数据。因为java是一种静态类型语言(意味着类型在编译时已知),注解属性数据(元数据)在编译时也是已知的似乎是合理的-您正在定义/声明关于

java - HQL 中的常量枚举值

我有一个有效的查询,我需要通过使用常量枚举值进行过滤来修改它。现在看起来是这样的:publicstaticfinalStringvenueQuery="selectdistinctvfrompackage.Venuev"+""+"WHEREv.venueType=package.enums.VenueType.VOUCHER_PROVIDER";以这种方式改变数据会导致org.hibernate.hql.internal.ast.QuerySyntaxException:unexpectedtoken列定义是这样的:@Enumerated(EnumType.STRING)@Column