【问题标题】:Java static main also codingBatJava 静态主要也是codingBat
【发布时间】:2016-03-13 09:19:58
【问题描述】:
public class CodingBat {
    public static void main(String[] args) {
        System.out.println(sumDouble(5,5));
    }

    public int sumDouble(int a, int b) {
        if( a ==b) {
            return 2*a + 2* b;
        } else{
            return a + b;
        }
    }
}

所以我做了这段代码,我真的很困惑为什么它不起作用,除非我在公共 int sumDouble 之间写静态,因为我正在练习codingBat,并回答他们不涉及静态的问题,但是那么他们如何测试代码。他们用主要的吗?我的意思是你必须让代码运行正确? 所以据我所知,静态意味着这个类的每个对象都将包含相同的值。但我没有看到这个错误的相关性。

“不能对非静态方法进行静态引用”

感谢您的帮助:D

【问题讨论】:

  • 静态上下文,无法访问非静态方法。
  • 不能从静态方法调用非静态方法。当你想在没有静态修饰符的情况下调用你的方法时,你需要创建一个 CodingBat 的实例:new CodingBat().sumDouble(5, 5);
  • 那么你的问题是,他们如何测试我在第三方网站上编写的代码?
  • 你为什么把对整数求和的方法命名为sumDouble

标签: java static main


【解决方案1】:

我真的很困惑为什么除非我写静态它不起作用 公共 int sumDouble 之间,

是的,static 是必需的

由于main method is staticsumDouble() method is not,你不能在不创建类对象的情况下调用方法。您不能从静态方法中引用非静态成员。

要么创建方法static,要么创建如下对象,然后访问方法。

CodingBat obj = new CodingBat();
 System.out.println(obj.sumDouble(5,5));

更多信息请参考here

【讨论】:

    【解决方案2】:

    您可以通过静态上下文调用它,意思是像你一样(或者,从另一个类,通过:ClassName.methodName();

    或者,你必须将它作为一个实例方法来调用,如果你不将它声明为静态的,那么你将需要一个实例来调用它:

    public static void main(String[] args){
            CodingBat cB = new CodingBat();
            System.out.println(cB.sumDouble(5,5));
        }
    

    【讨论】:

      【解决方案3】:

      您需要创建一个对象才能使用此方法

      public class CodingBat {
          public static void main(String[] args){
              CodingBat obj = new CodingBat();
              System.out.println(obj.sumDouble(5,5));
          }
          public int sumDouble(int a, int b) {
              if( a ==b){
                  return 2*a + 2* b;}
              else{
                  return a + b;}
          }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-26
        • 2015-09-05
        • 1970-01-01
        • 2016-12-26
        • 2014-01-11
        • 1970-01-01
        • 2016-09-22
        • 2011-02-08
        相关资源
        最近更新 更多