2013-12-20 105 views
1

我无法编译下面的代码。无法理解这里的编译过程。为什么主类实例对其他类不可见(test1)。为什么它没有编译。请帮忙。Java主类实例访问

public class test { 
    public int i = 10; 
    public static void main(String[] args) { 
      System.out.println("test main"); 
    } 
} 
class test1 { 
    test t = new test(); 
    System.out.println(t.i); 
} 
+1

什么是你的错误messag è? – user1781290

+0

你有多少个文件?他们每个人的确切内容是什么? – sp00m

+0

这里是错误 test.java:9:错误:预计 System.out.println(t.i); ^ test.java:9:error: expected System.out.println(t.i); ^ 2错误 –

回答

2
System.out.println(t.i); 

必须有一些方法内。

public class Test { 
    public int i = 10; 
    public static void main(String[] args) { 
     System.out.println("test main"); 
    } 
} 


class Test1 { 

    Test t = new Test(); 

    public void printI(){ 
     System.out.println(t.i); 
    } 

} 

还坚持java命名约定。类名必须以大写字母开头。变量和方法必须在骆驼情况下。

+0

是的我的意思是方法 –

7

System.out.println(t.i);声明应位于块或方法内。

例如,可以地方它的块内的(静态或非静态,没关系)。

public class test1 { 
    test t = new test(); 

    static { //static can be omitted 
     System.out.println(t.i); 
    } 
} 

或者地方是一个方法

public class test1 { 
    test t = new test(); 

    public static void printSomething() { //static can be omitted 
     System.out.println(t.i); 
    } 
} 

更多信息之内(感谢@vidudaya):

+0

我想知道这是什么问题。将它放在一个静态块工作(编译)? –

+0

要么将​​其放置在一个块中(静态或非静态,不要任意)或在方法中。 –

+2

检查[此](http://stackoverflow.com/questions/15901973/why-does-system-out-println-have-to-be-inside-a-method) – prime