实例和常量变量

时间:2014-01-29 02:06:59

标签: java

我想知道变量可以是实例还是常量?例如

private final int Min=25;

既是实例变量又是常量变量?

5 个答案:

答案 0 :(得分:6)

The Java Language Specification has a chapter on variables.

  

变量是存储位置,有时也具有关联类型   称为编译时类型,即原始类型(§4.2)   或参考类型(§4.3)。

有不同类型的变量:class,instance,local,method parameter,catch块中的异常参数,构造函数参数和数组组件。

还有final variables,只能分配一次。

如果您在班级中声明非static字段,则该字段被视为instance variable

The JLS also says

  

原始类型或类型String的变量,即final和   用编译时常量表达式(第15.28节)初始化,是   称为常量变量。

所以是的,你的是一个实例和常量变量。

答案 1 :(得分:5)

来自Chapter 4 of the Java Language Specification

在第4.12.3节

  

实例变量是在类声明中声明的字段,不使用关键字static

在第4.12.4节

  

基本类型或类型String的变量,是最终的并使用编译时常量表达式(第15.28节)初始化,称为常量变量。

所以,是的,这既是常量变量又是实例变量。

随意使用术语“常量变量”。这听起来是矛盾的,但是JLS使用它,所以你可以这样做。

答案 2 :(得分:1)

,您的示例将是实例和常量。

有一个无法更改的实例变量的原因。

一个是清晰易读的代码。当你在早期看到一个变量时,如果它正在改变值或引用,你不必在以后的程序中担心。这使您可以专注于变量实际变化的程序的其他部分。

有关变量的更多信息,请查看JLS

答案 3 :(得分:0)

Instance Variable:实例变量是在类(即成员变量)中定义的变量,该类的每个对象都有一个单独的副本或实例。

例如:

class MyClass { 
   int a; // instance variable;
   People p; // instance variable;
   static int b; // not instance variable. because all instances of class MyClass use same variable b
   static People community; // not instance variable with same reason.
}

Constant:常量是一个标识符,其关联值通常不会被程序在执行期间更改。在Java中,没有像C#那样的真正常量。在C#中,声明常量是:

// C# Code
const int a = 3; // true
const int a; // wrong. because constant must permently have value. because it cannot have another values in their life.

但在Java中,只有:一个变量可以初始化只有一次。并最终使用它:

// Java Code
final int a = 3; // true
final int b; // still true. you can declare it later

因此。结合以上知识,你可以说你的例子:private final int Min=25;既是实例变量又是“const”变量(java没有const变量,请记住)

希望这有帮助:)

答案 4 :(得分:0)

instance variable是一个变量,每个类的每个实例都有自己的版本。例如,如果您有Car类,Car的实例变量可能是color。每次创建Car的新实例时,都可以设置其颜色实例变量。

常量只表示在赋值后无法更改 - 它也必须使用常量表达式进行初始化(感谢David!)。因此,对于Car类,您可以使用特定颜色实例变量实例化新的Car对象。在Car类代码中,您可以使用final关键字在设置后使颜色不变。

是的,可以将实例变量定义为常量。