草庐IT

java - 将 java 方法参数设为 final

final与下面的代码有何不同。将参数声明为final.有什么好处吗?publicStringchangeTimezone(Timestampstamp,TimezonefTz,TimezonetoTz){return....}publicStringchangeTimezone(finalTimestampstamp,finalTimezonefTz,finalTimezonetoTz){return....} 最佳答案 由于形式方法参数是一个局部变量,因此只有将它们声明为final时,才能从内部匿名类访问它们。这使您不必在方法主

java - 带有 static 和 final 限定符的奇怪 Java 行为

这个问题在这里已经有了答案:Finalfieldsinitializationorder(2个回答)关闭6年前。在我们的团队中,我们发现了一些奇怪的行为,我们同时使用了static和final限定符。这是我们的测试类:publicclassTest{publicstaticfinalTestme=newTest();publicstaticfinalIntegerI=4;publicstaticfinalStringS="abc";publicTest(){System.out.println(I);System.out.println(S);}publicstaticTestgetI

java - Java Final 变量会有默认值吗?

我有一个这样的程序:classTest{finalintx;{printX();}Test(){System.out.println("constcalled");}voidprintX(){System.out.println("Herexis"+x);}publicstaticvoidmain(String[]args){Testt=newTest();}}如果我尝试执行它,我会收到编译器错误:variablexmaynothavebeeninitialized基于java默认值我应该得到以下输出正确吗??"Herexis0".final变量会有默认值吗?如果我像这样更改我的代码,

java - 在 Java 中对变量使用 final 会改善垃圾收集吗?

今天我和我的同事讨论了在Java中使用final关键字来改进垃圾收集。例如,如果您编写一个方法,例如:publicDoubledoCalc(finalDoublevalue){finalDoublemaxWeight=1000.0;finalDoubletotalWeight=maxWeight*value;returntotalWeight;}在方法final中声明变量将有助于垃圾回收在方法退出后从方法中未使用的变量中清理内存。这是真的吗? 最佳答案 这里有一个稍微不同的例子,一个带有最终引用类型的字段而不是最终值类型的局部变量:

java - Java 修饰符(abstract、final、public、static 等)的合理顺序是什么?

Java修饰符的合理顺序是什么?摘要最终原生私有(private)的protected公开静态strictfp同步transient易变更新我已将措辞从推荐更改为合理,以平息是否推荐订单的讨论。 最佳答案 JavaLanguageSpecification中提到了修饰符的习惯使用顺序。(而不是Java虚拟机规范)例如对于classmodifiers你会发现以下定义(摘录):ClassModifiers:ClassModifierClassModifiersClassModifierClassModifier:oneofAnnotat

java - 为什么我们将 Loggers 声明为 static final?

在Java中,为什么最好声明一个记录器staticfinal?privatestaticfinalLoggerS_LOGGER 最佳答案 private-这样没有其他类可以劫持您的记录器static-因此每个类只有一个记录器实例,同时也避免尝试序列化记录器final-在类的生命周期内无需更改记录器另外,我更喜欢名称log尽可能简单,但具有描述性。编辑:但是,这些规则有一个有趣的异常(exception):protectedfinalLoggerlog=LoggerFactory.getLogger(getClass());相对于:p

java - 什么时候应该使用 final 作为方法参数和局部变量?

我发现了一些建议尽可能使用final的引用资料(forexample),我想知道这有多重要。这主要是在方法参数和局部变量的上下文中,而不是final方法或类。对于常量,这显然是有意义的。一方面,编译器可以进行一些优化,让程序员的意图更加清晰。另一方面,它增加了冗长,优化可能是微不足道的。这是我应该努力记住的吗? 最佳答案 沉迷于:Final字段-将字段标记为final会强制它们在构造结束时设置,使该字段引用不可变。这允许安全地发布字段,并且可以避免在以后读取时需要同步。(请注意,对于对象引用,只有字段引用是不可变的-对象引用所引用的

java - : The serializable class does not declare a static final serialVersionUID field?是什么意思

这个问题在这里已经有了答案:WhatisaserialVersionUIDandwhyshouldIuseit?(25个回答)关闭4年前。我有标题中给出的警告信息。我想了解并删除它。我已经找到了关于这个问题的一些答案,但由于技术术语过多,我不理解这些答案。能不能用简单的话来解释这个问题?附:我知道OOP是什么。我知道什么是对象、类、方法、字段和实例化。附言如果有人需要我的代码,就在这里:importjava.awt.*;importjavax.swing.*;publicclassHelloWorldSwingextendsJFrame{JTextAream_resultArea=ne

c++ - C++11 中的 "final"关键字用于函数的目的是什么?

C++11中final关键字的作用是什么?我知道它可以防止派生类覆盖函数,但如果是这种情况,那么将final函数声明为非虚拟还不够吗?我还有什么遗漏的吗? 最佳答案 正如idljarn在评论中已经提到的那样,您缺少的是,如果您从基类中覆盖一个函数,那么您不可能将其标记为非虚拟:structbase{virtualvoidf();};structderived:base{voidf()final;//virtualasitoverridesbase::f};structmostderived:derived{//voidf();//e

java - 是否应该以大写形式声明 "static final Logger"?

在Java中,静态最终变量是常量,并且约定它们应该大写。但是,我看到大多数人以小写形式声明记录器,这在PMD中被视为违规。.例如:privatestaticfinalLoggerlogger=Logger.getLogger(MyClass.class);只需搜索google或SO对于“静态最终记录器”,您将自己看到。我们应该改用LOGGER吗? 最佳答案 记录器引用不是常量,而是最终引用,不应大写。常量VALUE应为大写。privatestaticfinalLoggerlogger=Logger.getLogger(MyClass