1

我正在观看 youtube 上的教程,主题是私有变量。我们通常在java中这样设置变量:

class hello {

    public static void main(String args[]) {
        String x;
        x = "Hello"
    }
}

但是在那个教程中,字符串类型是在这样的方法中声明的:

class hello {

    private String x;

    public void apples() {
        x = "this is a private variable.";
        System.out.println(x);
    }
}

如您所见,它不是主要方法,但我想问一下,私有变量总是必须超出方法还是什么?

我是一个初学者,所以这对了解真的很有帮助,因为我不想为了防止混淆而塞满知识,而且事实上,塞满代码的人永远不会成为一名优秀的程序员。

4

6 回答 6

3

私有变量总是必须超出方法还是什么?

这是正确的。方法内的变量是局部变量,不能有任何访问修饰符,例如 private、public 或 protected。这些修饰符只能应用于成员变量,即在类范围内声明的变量。

如果您考虑一下,这很有意义,因为无论如何其他类都无法访问局部变量。甚至不是同一类的另一个对象或同一对象中的另一个方法。

相关问题:

于 2012-07-28T06:56:32.313 回答
0
 but i want to ask that do private variables always have to be out of method or what?.

好吧,实际上在方法中将变量设为私有是没有意义的。因为在方法中声明的变量是堆栈变量,它们的范围比私有的更窄。因为它们只能在声明它们的方法中访问,并且私有变量在它们声明的整个类中具有范围。

于 2012-07-28T07:24:02.840 回答
0

我认为让您感到困惑的是局部变量(在方法中声明)和成员变量(在类中声明,在类方法之外)之间的区别。

局部变量在声明它的方法运行时就存在。它在它被声明的时候就存在,然后在下一个 } 字符出现时超出范围(除了那些与 { 尚未打开的字符匹配的字符)。这实际上意味着该变量会消失得无影无踪——一旦超出范围就无法使用。

但是成员变量存在于对象内部。这意味着它在对象被创建时被创建,在对象被销毁时被销毁。因此,它通常比局部变量存在更长的持续时间。成员变量有时可以被它们所属的对象以外的对象使用;并且有一些非常复杂的规则围绕何时可以做到这一点。

成员变量上的private修饰符仅意味着它只能由对象所属类中的代码访问。

于 2012-07-28T07:18:10.630 回答
0

Java 中的私有变量是该类全局可访问的变量,并且只能对该类访问(当然还有包含类中的任何其他方法)。

在方法中声明的变量只能在方法范围内访问。在 if 语句中声明的变量只能在 if 语句中访问 .... 等等。

由于性能问题,最好使用尽可能少的私有变量。假设您在一个类中声明了 100 个私有变量。您的类包含 10 个方法,每个方法使用 10 个变量。当实例化一个对象时,你的对象被创建实例化了 100 个私有变量。如果将变量设置为方法的本地变量,则在类的实例化时不会创建变量,并且每次访问方法时都会使用 10 个变量......

java中还有其他类型的变量,为了更好地理解你可以从这里开始http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html

于 2012-07-28T07:05:31.267 回答
0

在范围内创建的任何变量(在 { } 内的代码块)都是local该范围的变量;并且在街区外无法访问。

private当您谈论类并定义一个在类无法访问的成员时,变量也是术语。

于 2012-07-28T07:33:22.393 回答
0

Cass 变量必须声明为以下类型之一:

上市

受保护

上市

在第一个示例中,变量是函数的本地变量:也就是说,它专门绑定到方法 hello.main()。

在这种情况下,它只能在该方法函数中访问。它不是类变量,因此不需要设置其访问级别。

在第二个示例中,变量是类变量。当您有一个类变量时,您可以将其设置为私有(只能由该类的对象访问)、受保护(由继承的类访问)或公共(可以在对象外部访问)。然后类中可能的许多方法可以访问该类变量。

当您在类定义中而不是在方法中设置变量时,它被称为“字段”或“属性”或“属性”。您定义字段可访问性的方式是必需的,因为类中的多个方法可以引用它。

当您在任何方法中设置了变量时,它只能在该方法内部访问,而不能在外部访问(除非您使用引用指针或通过方法参数传递它)。

于 2012-07-28T06:56:53.913 回答