Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的变量是什么?为什么要使用它?_Java_Variables - Fatal编程技术网

Java中的变量是什么?为什么要使用它?

Java中的变量是什么?为什么要使用它?,java,variables,Java,Variables,我正在创建一个对象,它应该被另一个方法使用 我如何做到这一点 这是我的密码: public class Program { public static void main(String[] args) { new MyClass(); myMethod(); } public static void myMethod() { // Here's where I want to use my object } }

我正在创建一个对象,它应该被另一个方法使用

我如何做到这一点

这是我的密码:

public class Program {

    public static void main(String[] args) {
        new MyClass();
        myMethod();
    }

    public static void myMethod() {
        // Here's where I want to use my object
    }
}

public class MyClass {

}

您应该了解两个关键要素:

  • 使用变量存储对象和
  • 然后将其作为参数传递给方法
第1部分:变量
创建对象后,应将其存储在变量中。否则它只存在于内存中,并将被垃圾收集,从而消失。拥有一个变量可以让您以后访问它,并且只要变量存在,就可以防止它被垃圾收集(这是关于范围的,您可能还想让自己熟悉这一点)

变量有一个类型(
MyClass
)和一个名称,您可以使用
=
来分配它

以下是相关部分:

public static void main(String[] args) {
    MyClass object1 = new MyClass();       // <--- note the change
    myMethod();
}
此时,您的代码将不会运行,因为该方法还不知道有关参数的任何信息。根据工具的不同,您可能会立即看到这一点,例如通过Eclipse中带下划线的文本:

要告诉方法它得到了什么,还需要在其中定义类型和名称:

public static void myMethod(MyClass differentName) {
    // Here's where I want to use my object
}
在方法
myMethod
中,请注意变量的名称可以不同。这没关系,程序只是给完全相同的东西起了一个不同的名字。我叫阿尔弗雷德,但你可以叫我艾尔

myMethod
中,只能使用新名称下的变量。根据您要执行的操作,您可以通过键入其名称和
来访问它。您甚至可以将其传递给其他方法。根据工具的不同,您将获得关于如何使用该工具的建议:


这真的是一个半定期出现的问题吗?当然。他们每天都得到答复。但它们都不够通用,无法相互接近。@Cold Fire总是反复检查。@ThomasWeller:那么其他几十个都不够好吗?@Cerburs:IMHO它们太具体,代码太多,初学者OP无法理解其他初学者的蹩脚代码。这是一个MCVE“拥有一个变量使您能够稍后访问它,并且只要该变量存在,就可以防止它被垃圾收集”。这是不准确的。对象不再可访问时,可以立即收集该对象。这不仅意味着即使变量仍在作用域中,也可以收集它所引用的对象,而且还意味着未分配给任何变量的对象仍不能进行收集。@Voo:同意,但这对于预期用途来说太复杂了。问这个问题的人绝对是新手,他们不会understand@ThomasWeller“问这个问题的人是绝对的初学者”=>这是一个更加精确的论点,因为这样的人会在没有任何进一步思考的情况下采纳这些陈述。@seelenVirtuse这可能是有争议的。这是一种说教式的减少。你试图让听众理解这个主题,这有时要求你不精确。在稍后阶段,人们将以更多的知识重申这一原则,并准备了解问题的整个深度。
public static void myMethod(MyClass differentName) {
    // Here's where I want to use my object
}