相关疑难解决方法(0)

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

我发现了一些建议使用的参考文献(例如)final尽可能多地使用,我想知道它有多重要.这主要是在方法参数和局部变量的上下文中,而不是最终方法或类.对于常数,它显然是有道理的.

一方面,编译器可以进行一些优化,这使得程序员的意图更加清晰.另一方面,它增加了详细程度,优化可能是微不足道的.

这是我应该努力记住的事情吗?

java final

161
推荐指数
8
解决办法
5万
查看次数

内部类和局部变量

为什么我需要声明local variablefinal,如果我的Inner class方法中定义需要使用它?

示例:

class MyOuter2 {

private String x = "Outer2";

void doStuff() {
    final String y = "Hello World";

    final class MyInner {

        String z = y;

        public void seeOuter() {
            System.out.println("Outer x is "+x);
            System.out.println("Local variable is "+y);
            MyInner mi = new MyInner();
            mi.seeOuter();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}

为什么String y需要是最终常量?它是如何影响的?

java local-variables inner-classes

14
推荐指数
3
解决办法
1万
查看次数

Java在哪里存储final成员和static成员?

我知道一个类的静态方法和非静态方法都存储在方法区中。
但我真的很怀疑Java在哪里存储对象的最终变量(常量)成员和静态变量成员。


例如,

class A{
     private final int a = 1;
     private static int b = 2;
     private static final int c = 3;
     //other codes...
}
Run Code Online (Sandbox Code Playgroud)

我想知道Java将a、b、c存储在内存中的哪里。堆、栈还是方法区?


======更新=====
嘿,感谢您的帮助。请允许我分享一个有关 jvm 组件的链接:http://www.artima.com/insidejvm/ed2/jvm2.html

java static memory-management final

5
推荐指数
1
解决办法
2847
查看次数

关于Java中的本地最终变量

在java Program中,参数String在方法声明中定义.但是在方法定义中,它作为final String变量被访问.是否会导致一些问题(如安全性,内存问题)?

例如:

方法声明

join(String a,String b);
Run Code Online (Sandbox Code Playgroud)

方法定义

public void join(final String a,final String b)
{
    Authenticator au = new Authenticator(){
        public PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(a,b)}
    };
}
Run Code Online (Sandbox Code Playgroud)

请帮助我,澄清我的疑虑.提前致谢

PS我正在访问a和b作为最终变量,因为我必须在内部类中使用它.

java final inner-classes

2
推荐指数
1
解决办法
1359
查看次数