繁体   English   中英

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

[英]What is the difference between a local variable, an instance field, an input parameter, and a class field?

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

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

例子:

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);
    }
}

输入参数,或参数甚至参数,是我们传递给方法或构造函数的东西。 它具有与我们传递给它的方法或构造函数相关的范围。

例子:

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的实例来检索所有整数的全局已知最大值。

不完全是。

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

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

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

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

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

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

首先通读 类和对象

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

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

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

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

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

是的

但我不知道类字段!

类字段和实例字段(通常)是同一回事。 唯一的区别是,如果该字段声明为static ,则它不能是实例字段...

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

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

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

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

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

例子:

public void someMethod () {

    int localVariable1 = 5;

    if (...) { 
        int localVariable2 = 7;
    }
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM