有时我看到类似的东西:
public class MainActivity extends Activity
{
public static final String url_google = "http://www.google.com";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Run Code Online (Sandbox Code Playgroud)
我实际上没有得到的,是为什么使用public static final,而不是 public final或final
A--*_*--C 14
我讲的非常广泛,但如果它是最终的,你只需要它的一个实例,所以它通过使其静态来节省内存.
更具体地说,final关键字意味着无论变量存储是什么都无法更改.这意味着一旦变量具有值,您可以使用该变量,但不能以任何方式对其进行修改.通常,要为最终变量赋值,您可以直接从声明中执行此操作,例如final int variable = 12.正如您所看到的,我在示例中使用了int,但您可以使用任何内容,包括引用变量.引用变量虽然很特殊,但因为您无法更改变量指向的内容,但您可以更改Object本身(例如使用get/set方法).
然而,归结为,一旦你制作了一个最终变量,它就占据了内存中的空间.由于我们无法进一步修改此变量,为什么每次我们的Class实例化时都要重新创建它?所以我们使用static关键字.这允许变量创建一次,并且只在内存中创建一次.
但是,有些特定情况下你不想使用static和使用final.一个示例可以是时间敏感变量,例如存储对象实例化的时间.