Tag: final

用==比较在Java中声明为最终的string

我有一个关于Java中string的简单问题。 以下简单代码段连接两个string,然后将它们与==进行比较。 String str1="str"; String str2="ing"; String concat=str1+str2; System.out.println(concat=="string"); 比较expression式concat=="string"返回false (我理解equals()和== )之间的区别。 当这两个string被声明为final时候, final String str1="str"; final String str2="ing"; String concat=str1+str2; System.out.println(concat=="string"); 比较expression式concat=="string" ,在这种情况下返回true 。 为什么final有所作为? 是否需要对实习生池做些什么,或者我只是被误导了?

为什么String类在Java中声明为final?

从我得知java.lang.String类在Java中被声明为final时,我想知道为什么是这样? 当时我没有find任何答案,但是这篇文章: 如何在Java中创build一个String类的副本? 提醒了我的查询。 当然,String提供了我所需要的所有function,从来没有想过任何需要扩展类String的操作,但是你永远不会知道某人可能需要什么! 那么,有没有人知道devise师决定最后决定什么?

在Java中使用final类

我正在读一本关于Java的书,它说,你可以宣布整个class级是final 。 我想不出什么地方可以用这个。 我只是新的编程,我想知道如果程序员真的在他们的程序中使用它 。 如果他们这样做,他们什么时候使用它,所以我可以更好地理解它,知道什么时候使用它。 如果Java是面向对象的,并且你声明了一个类的final ,那么它不会阻止类具有对象特性的想法吗?

什么时候应该使用final方法参数和局部variables?

我发现了几个参考( 例如 ),build议尽可能使用final ,我想知道这是多么重要。 这主要是在方法参数和局部variables的上下文中,而不是最终的方法或类。 对于常量来说,这是显而易见的。 一方面,编译器可以进行一些优化,并使程序员的意图更清晰。 另一方面,它增加了冗长,优化可能是微不足道的。 我应该努力记住这件事吗?

在Java中使用final关键字可以提高性能吗?

在Java中我们看到很多地方可以使用final关键字,但是它的使用是不常见的。 例如: String str = "abc"; System.out.println(str); 在上面的例子中, str可以是final但是这通常是中止的。 当一个方法永远不会被覆盖时,我们可以使用final关键字。 类似的情况下,不会被inheritance的类。 在任何或所有这些情况下使用final关键字是否真正提高性能? 如果是这样,那么怎么样? 请解释。 如果正确使用final对于性能来说真的很重要,那么Java程序员应该开发哪些习惯来充分利用关键字呢?

最后的和有效的最终的区别

我在Java 8中玩lambdaexpression式,并且遇到了local variables referenced from a lambda expression must be final or effectively final警告。 我知道当我在匿名类中使用variables的时候,他们在外部类中必须是最终的,但是仍然是 – 最后的和有效的最终的区别是什么?

不能引用在不同方法中定义的内部类中的非最终variables

编辑:我需要改变几个variables的值,因为他们通过计时器运行几次。 我需要通过定时器每次迭代不断更新值。 我不能将值设置为final,因为这将阻止我更新值,但是我得到了我在下面的初始问题中描述的错误: 我以前写过以下内容: 我得到错误“不能引用在一个不同的方法定义的内部类中的非最终variables”。 这种情况发生在称为价格的双倍价格和称为priceObject的价格上。 你知道我为什么会遇到这个问题吗? 我不明白为什么我需要最后的宣言。 另外,如果你可以看到我正在做的是什么,我该怎么做才能解决这个问题。 public static void main(String args[]) { int period = 2000; int delay = 2000; double lastPrice = 0; Price priceObject = new Price(); double price = 0; Timer timer = new Timer(); timer.scheduleAtFixedRate(new TimerTask() { public void run() { price = priceObject.getNextPrice(lastPrice); System.out.println(); lastPrice = price; […]

最终关键字的工作原理

在Java中,我们使用final关键字和变量来指定它的值不被改变。 但是我发现你可以改变类的构造函数/方法中的值。 同样,如果变量是static那么这是一个编译错误。 这里是代码: import java.util.ArrayList; import java.util.List; class Test { private final List foo; public Test() { foo = new ArrayList(); foo.add("foo"); // Modification-1 } public static void main(String[] args) { Test t = new Test(); t.foo.add("bar"); // Modification-2 System.out.println("print – " + t.foo); } } 上面的代码工作正常,没有错误。 现在将该变量更改为static : private static final List foo; […]