【问题标题】:Calling Methods In Java - Hello World Example [duplicate]在 Java 中调用方法 - Hello World 示例 [重复]
【发布时间】:2014-07-17 01:47:30
【问题描述】:

我正在缓慢但肯定地通过 java 工作,并且已经获得了一个可以工作的程序。但是,我正在使用的程序在 main 方法中包含所有代码,我想使用其他方法来更好地组织。

我的问题很简单,所以我将使用最简单的例子。假设我想创建一个这样的 Hello World 程序:

public class HelloWorld {

    public static void main(String[] args) {
        Test();
    }

    public void Test(){
        System.out.println("Hello World!");
    }
}

如何在 java 中正确调用 Test()?我编写它的方式会产生编译器错误。我来自 R,这将允许这样的事情。

谢谢。

【问题讨论】:

  • 你研究过编译器错误吗?请记住,Java 是一种面向对象的语言。

标签: java methods


【解决方案1】:

首先,您的方法应该命名为test(而不是“Test”)。此外,它应该是(在这种情况下)static

public static void main(String[] args) {
    test();
}

public static void test(){
    System.out.println("Hello World!");
}

或者,你也可以这样写,

public static void main(String[] args) {
    new HelloWorld().test(); // Need an instance of HelloWorld to call test on.
}

public void test() { //<-- not a static method.
    System.out.println("Hello World!");
}

【讨论】:

  • 谢谢艾略特。我将进一步研究静态。语言的这方面肯定让我很吃惊。
  • @ElliottFrisch - 无需更改方法的名称,这样也可以正常工作。但是,准确地说,在 Java 中,将方法的第一个块名命名为较小的字符,其余块名命名为大写字符是一种传统。
【解决方案2】:

看,你对代码所做的是你从一个静态方法调用了一个非静态方法,它是“public static void main(String[] args)”在这里。稍后,随着时间的推移你会知道静态成员是最先被编译器调用的,然后遵循非静态成员的正常流程。

在Java中,要调用非静态方法,要么你需要创建一个类对象从main()方法调用非静态方法,要么你自己声明将非静态方法作为静态方法,这可能并非在所有情况下都很好,但它会简单地在 main() 方法中调用!

正确的代码(如果你想从静态方法调用非静态方法):-

 public class HelloWorld {

 public static void main(String[] args) {
    new HelloWorld().Test();
 }

 public void Test(){
    System.out.println("Hello World!");
 }
}

替代代码(如果你想从静态方法调用非静态方法,请将前者设为静态):-

public class HelloWorld {

 public static void main(String[] args) {
   Test();
 }

 public static void Test(){
    System.out.println("Hello World!");
 }
}

【讨论】:

    【解决方案3】:

    Test()方法需要声明为静态,所以:

    public static void Test(){
            System.out.println("Hello World!");
        }
    

    或者你可以创建一个新的 HelloWorld 对象,然后让它调用 Test():

    public static void main(String[] args){
         HelloWorld foo = new HelloWorld();
         food.Test();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-14
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      相关资源
      最近更新 更多