草庐IT

Final-Metaverse-Fantasy

全部标签

java - java中的常量变量和final变量有什么区别?

请帮助我理解Java中常量变量和final变量之间的区别。我对此有点困惑。 最佳答案 常量是概念,变量的属性。final是声明常量变量的java关键字。正如其他人指出的那样,从语义/语言的角度来看,表达式常量变量是一个矛盾修饰法,因此,我们可以争论它的正确性。引用specification,无论如何,我们可以阅读Avariableofprimitivetype[...],thatisfinalandinitializedwithacompile-timeconstantexpression(§15.28),iscalledacons

Java:引用同步对象是否需要 volatile/final?

这似乎是一个非常基本的问题,但我找不到明确的确认。假设我有一个正确同步的类:publicclassSyncClass{privateintfield;publicsynchronizedvoiddoSomething(){field=field*2;}publicsynchronizedvoiddoSomethingElse(){field=field*3;}}如果我需要对那个类的实例有一个引用,并在线程之间共享,我仍然需要声明那个实例是volatile或final,我说得对吗?如:publicclassMainClass{//previouslyOuterClasspublicsta

java - JBoss 工具部署错误 : This may be caused by your server's temporary deploy directory being on a different filesystem than the final destination

在Eclipse中使用JBoss工具部署应用程序时出现以下错误:ErrorrenamingC:\wildfly-8.1.0.Final\standalone\tmp\tmp7858611943756287857.xhtmltoC:\wildfly-8.1.0.Final\standalone\deployments\.war\403.xhtml.Thismaybecausedbyyourserver'stemporarydeploydirectorybeingonadifferentfilesystemthanthefinaldestination.Youmayadjusttheses

java - 在没有初始化器的情况下将局部变量声明为 final 并在 if 语句中分配

我只是做了一个小的代码更改以消除FindBugs警告,该警告需要将一些代码移动到匿名内部类。为了访问一些变量,我必须将它们声明为final。所以这是更改后的代码片段:finalFile[]libPath;//libPathisfinalbutassignmenttakesplacelaterif(libraryPath!=null){libPath=pathToFiles(libraryPath);}else{libPath=newFile[0];}在当前Eclipse(版本3.7.1)中将语言设置为Java6时编译效果很好。但是我很确定这曾经在某些以前的版本中出错。似乎编译器在确定存

javax.crypto.BadPaddingException :Given final block not properly padded

我必须解密我服务器上的一个帧。加密帧通过套接字上的GPRS来自客户端设备。加密是使用TripleDes和给定key完成的。我在服务器端使用相同的算法和key。Frame是Hex和AsciiString的组合。现在的问题是:当我用零填充字节数组时,出现以下异常。javax.crypto.BadPaddingException:Givenfinalblocknotproperlypadded以下是我的代码:byte[]key=newbyte[]{31,30,31,36,32,11,11,11,22,26,30,30,30,30,30,30,30,30,30,30,30,30,30,30};

java - 访问 final 局部变量是否比 Java 中的类变量更快?

我一直在研究一些Java原始集合(trove、fastutil、hppc),我注意到一种模式,即类变量有时被声明为final局部变量。例如:publicvoidforEach(IntIntProcedurep){finalboolean[]used=this.used;finalint[]key=this.key;finalint[]value=this.value;for(inti=0;i我已经做了一些基准测试,看起来它在执行此操作时稍微更快,但为什么会这样?我试图了解如果注释掉该函数的前三行,Java会有什么不同。注意:这似乎类似于thisquestion,但那是针对C++的,并没

java - 为什么 Final 字段在 Java 中不能是 Volatile?

这个问题在这里已经有了答案:WhycananObjectmembervariablenotbebothfinalandvolatileinJava?(8个答案)关闭9年前。我想了解为什么不能将声明为final的引用声明为Volatile。SO[WhycananObjectmembervariablenotbebothfinalandvolatileinJava?上也有类似的问题[1]:WhycananObjectmembervariablenotbebothfinalandvolatileinJava?但我不确定该答案是否理解FINAL。现在final变量的状态肯定可以在初始化后更改。

java - 在 for each 循环中使用 final

我与有效的java有一个小冲突。一方面,它强烈鼓励使用final修饰符。它还鼓励使用foreach循环。但是我在任何地方都没有看到任何代码,这些代码是这样的:for(finalelemente:list){//dowhatever.}如果预计元素不会改变,那么使用final似乎不错。为什么它不常见? 最佳答案 通常开发人员保留默认设置,只在需要时才添加代码。也就是说,编写最短的代码更容易。想想一个演讲厅,如果你做了某事,他们会要求你举手,如果你不做某事,他们会要求你举手,大约一半的房间根本不会投票。恕我直言默认值应该是final并且

Java使用非final变量设置final变量

这可能是个愚蠢的问题,但我还是会冒险问这个问题。我经常需要创建一个final变量以在其他地方使用,并且需要根据某些条件设置该变量的值。这是我通常的做法:StringnotFinalVersion=null;if(someThing==1){notFinalVersion="Thevaluewas1.";}else{notFinalVersion="Thevalueisnot1.";}finalStringfinalVersion=notFinalVersion;然后我可以在需要的地方使用变量finalVersion。但是,这似乎有点不对劲。有更好的方法吗?编辑:我所说的“更好”是指我正

java - 使用 final 关键字声明一个列表字段

如果我在Synapse是抽象类型的类中有以下语句:privatefinalListsynapses;final是否允许我仍然能够更改List中的Synapse对象的状态,但阻止我添加新的Synapse对象到列表?如果我错了,你能解释一下final是做什么的,以及我什么时候应该使用关键字final吗? 最佳答案 不,final关键字不会使列表或其内容不可变。如果你想要一个不可变的列表,你应该使用:ListunmodifiableList=Collections.unmodifiableList(synapses);final关键字的作