日期:2014-05-20  浏览次数:20914 次

提示的错误是“需要标识符”,就是不明白需要什么标识符?
import java.util.*;

public class Test
{
public static void main(String[] args)
{
  A a = new A();
  A.B b = new A.B(2);
  System.out.println(b.getFirst());
  a.returnB();
  System.out.println(b.getFirst());
  System.out.println(a.second);
  System.out.println(a.third);   

}
}

class A
{
private  static int first;
private  static int second;
public   int third;

  public static  class B
{
public B(int a)
{
first = a;

}

public static int getFirst()
{
return first;
}
}

public static B returnB()
{
second = 10;

return new B(second);
}

third = second;
}


错误提示为

------解决方案--------------------
third = second;
这个语句应该放在方法里面吧?
------解决方案--------------------
①a.second,不能访问私有属性;
②third = second;需要加int、float等类型的;
③多看下基础书吧
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

third = second;
这个语句应该放在方法里面吧?

把它放进方法里,的确能得出结果,为什么像我这样不行呢?


的确要放进方法,这一点我自己现在也理解了。但是如果我注释掉23行,把46行改成我想如果我这样定义public int third = secnond;

可以得出这样的结果

E:\java练习程序\practice\Test>java Test
2
10
0

为什么a.third是0呢?

a.third之所以为0是因为,类会初始化second为0,再把second的值赋给third,你可以去了解下java中类的初始化顺序!
------解决方案--------------------
引用:
Quote: 引用:

third = second;
这个语句应该放在方法里面吧?

把它放进方法里,的确能得出结果,为什么像我这样不行呢?

类有属性和方法,而third = second;不是属性,也不是方法,只是一个语句,你对类的理解不够透彻。
------解决方案--------------------
second被private修饰且没有提供get和set方法因此a.second不能访问. third = second,这一句我认为是逻辑上的错误,因为second不可见,JVM找不到对外的second,而你人为地让second赋值给third,当然会报错。