我想知道变量可以是实例还是常量?例如
private final int Min=25;
既是实例变量又是常量变量?
答案 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。
原始类型或类型
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关键字在设置后使颜色不变。
是的,可以将实例变量定义为常量。