两个具有不同值的公共静态变量

时间:2016-05-11 06:33:56

标签: java

如果这是重复的,请告诉我..搜索但在堆栈溢出中找不到这个确切的问题。 说我们有

public class A{
      public static String s="Arnab";
    }

 public class B{
     public static String s="Someone else";
    }



public class C{

    public void myMethod(){
         System.out.println(s);
      }
    }

C类myMethod()中的syso会打印什么? 为什么?

更新:哎呀对不起我的坏..没有意识到没有使用类名(如A.s) 希望我能删除答案:(

3 个答案:

答案 0 :(得分:1)

  1. 您无法直接访问这些变量。你也必须提供课程名称。
  2. 你不能直接在课堂上写一个陈述。您将不得不使用块或功能
  3. public class C {
        public static void main(String...args){
            System.out.println(A.s);
            System.out.println(B.s);
        }
    }
    

答案 1 :(得分:1)

如果你运行了代码,你会得到:

   error: cannot find symbol
             System.out.println(s);

这是因为在C类中未定义s,如果您想访问A类的s,请使用A.s。同样,B类sB.s

例如:(对于s的{​​{1}})

class B

输出:public void myMethod(){ System.out.println(B.s); }

(您可以在Someone else

中获得分配给s的任何内容

答案 2 :(得分:0)

我可以在你的帖子中看到很多错误。

1)仅声明已定义方法的公开类。

2)始终在方法内定义除初始化和声明之外的语句。

3)始终使用类名或对象名来在声明它的类之外使用静态变量。

4)您只能使用类的实例来使用实例变量(非静态)。

现在关于您的查询:这些变量不重复,输出取决于您为该变量使用的类。

    class A{
              public static String s="Arnab";
            }

         class B{
             public static String s="Someone else";
            }

     public class C{
            public static void main(String [] ar){
              System.out.println(A.s); // gives:Arnab
System.out.println(B.s); // gives:Someone Else
            }
        }