【问题标题】:What is the difference between a local variable, an instance field, an input parameter, and a class field?局部变量、实例字段、输入参数和类字段有什么区别?
【发布时间】:2013-12-18 23:57:22
【问题描述】:

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

【问题讨论】:

  • 也许他正在尝试学习如何用 Java 编程,并且遇到了这些他不确定的术语。
  • 汤姆是正确的。我是一名正在准备期末考试的大学生。

标签: java variables scope


【解决方案1】:

局部变量是在块的范围内定义的。它不能在该块之外使用。

例子:

if(x > 10) {
    String local = "Local value";
}

我不能在 if 块之外使用 local

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

如果我想在对象的外部使用它,并且它不是public,我将不得不使用getter 和/或setter。

例子:

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

    public void showX() {
        System.out.println("X is: " + xValue);
    }
}

输入参数,或parameter,甚至argument,是我们传递给方法或构造函数的东西。它对我们传入的方法或构造函数具有作用域。

例子:

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

    public void setX(int x) {
        xValue = x;
    }
}

x 两个参数都绑定到不同的作用域。

类字段,或静态字段,类似于字段,但不同之处在于您不需要拥有包含对象的实例即可使用它。

例子:

System.out.println(Integer.MAX_VALUE);

我不需要Integer 的实例来检索全球已知的所有整数的最大值。

【讨论】:

  • 严格来说,参数是方法定义中的变量。 argument 将是传递给方法的 dataactual value参数使用示例: int numberAdder(first,second) 参数使用示例: numberAdder(4,2)
【解决方案2】:

不完全是。

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

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

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

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

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

【讨论】:

    【解决方案3】:

    类字段通常称为类变量,您可以找到该信息here

    【讨论】:

      【解决方案4】:

      首先阅读Classes and Objects

      我知道局部变量是它所在的类可用的变量,对吗?

      不,通常局部变量是指仅在声明的区域内具有上下文的变量。这通常是指在方法和{...} 块中声明的变量(如if 语句)

      实例字段是在构造函数中创建的对象...?

      不是真的,实例字段是在类级别声明的任何字段,它不是静态的,因此它的值仅对类的单个实例有意义

      输入参数是传递给方法的参数。

      是的

      但我对类字段一无所知!

      类字段和实例字段(通常)是相同的。唯一的区别是如果该字段被声明为static,那么它就不能是一个实例字段...

      【讨论】:

        【解决方案5】:

        局部变量是方法的局部变量。

        实例字段是类实例的字段,即对象。

        一个参数被传递给一个方法

        一个类字段,我假设是一个与类关联的静态字段。例如如果你使用多个类加载器,你可以拥有多个同名的类和它们自己的静态字段。

        【讨论】:

          【解决方案6】:

          局部变量是方法中的变量。它的范围仅限于它周围的两个括号的范围。 {}

          例子:

          public void someMethod () {
          
              int localVariable1 = 5;
          
              if (...) { 
                  int localVariable2 = 7;
              }
          }
          

          对于实例字段,我认为您的意思是类实例的成员。如果你以 Dimension 类为例,这将是 heightwidth。 . 输入参数是方法中的参数,正如您所猜测的那样。

          类字段是静态方法中的字段。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-12-17
            • 2023-03-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多