局部变量,实例字段,输入参数和类字段之间有什么区别?

Jor*_*wan 6 java variables scope

相对于简单的Java程序,局部变量,实例字段,输入参数和类字段之间有什么区别?

Mak*_*oto 22

局部变量是一个块的范围内限定.它不能在该块之外使用.

例:

if(x > 10) {
    String local = "Local value";
}
Run Code Online (Sandbox Code Playgroud)

我不能local在那个if街区之外使用.

一个实例字段字段,是绑定到对象本身的变量.我可以在对象中使用它而无需使用访问器,并且对象中包含的任何方法都可以使用它.

如果我想在对象之外使用它,而事实并非如此public,我将不得不使用getter和/或setter.

例:

public class Point {
    private int xValue; // xValue is a field

    public void showX() {
        System.out.println("X is: " + xValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

一个输入参数,或者参数,甚至争论,是我们进入的方法或构造函数的东西.它具有关于我们传递给它的方法或构造函数的范围.

例:

public class Point {
    private int xValue;
    public Point(int x) {
        xValue = x;
   }

    public void setX(int x) {
        xValue = x;
    }
}
Run Code Online (Sandbox Code Playgroud)

两个x参数都绑定到不同的范围.

类场,或静态字段,类似于一个领域,但不同的是,你不需要有包含对象的实例来使用它.

例:

System.out.println(Integer.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)

我不需要一个实例Integer来检索所有整数的全局已知最大值.

  • 严格来说,**参数** 是方法的 _definition_ 中的变量。**参数** 将是传递给方法的 _data_ 或 _actual value_。**参数用法示例:** `int numberAdder(first,second)` **参数用法示例:** `numberAdder(4,2)` (3认同)

Tom*_*ard 5

不完全的。

类字段是您认为的局部变量,但它通常是静态字段,因此在所有实例中都是相同的。

实例字段与类字段相同,但不是静态的,并且对于对象的每个实例可以不同。

http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

局部变量是方法或块内的变量,只能由该方法或块使用。

哦,您的输入参数定义是正确的,输入参数是作为参数传递给方法的字段。