声明我也是新手
有些不明白你的意思 望指教
你的b是static变量,java中static方法允许直接用类名调用,不需要实例化
好象不生成对象这个b也是存在的
而你的a是private成员,也就是私有成员,就算你给a生成对象也不能在类外调用的public class example{
  public static void main(String[] args){
    A.b = 1;  //未实例化,但编译通过
    System.out.println("A.b = "+A.b);
    A aa = new A();
    aa.a = 1;//这样付值应该是不允许的,用A.a=1;就更不对了
  }
}

解决方案 »

  1.   

    a是private的,就不能类外直接读取!!!!!!!!!
    且必须实例化!
    b默认是public的,且是static变量,可以直接调用,且不需要实例化!
      

  2.   

    你说的没有错,aa.a = 1;是不可以的。我在写注释的时候太随意了,不好意思。
    我的意思就是,我现在能不能用非常规的方法——达到使用被声明为:private static int a的目的。我学java也不久,c++里指针的概念在我脑子里太深。
      

  3.   

    b默认是public的(其实是friend,只是friend不是java里的关键词)
      

  4.   

    我说的是用非常规的方法,来打破java的封装性。
    用正规的方法当然不可以了,这个我也知道。
      

  5.   

    我这有例子
    class A{
       static int a;
    }public class test {
       public static void main(String[] args){
         A aa=new A();
         System.out.println("aa.a"+aa.a);
         System.out.println("A.a="+A.a);
    }程序里面的 aa.a和A.a 是一个变量,这个在c++中是一样的.
      

  6.   

    现在这个问题还可以继续引申
    把class A放在test里面,如何才能引用 class A 中的a呢?public class test {
      class A{
       static int a;
      }   public static void main(String[] args){
          ? //  A aa=new A();     System.out.println("aa.a"+aa.a);
         System.out.println("A.a="+A.a);
    }欢迎大家讨论
      

  7.   

    只听说过怎么个更封装的,没见过要打破的,呵呵,打破了java还怎么个OO啊//个人认为不要老那此c++来和java比,会混爻的,建议先看看OOP吧:)另:b默认是package,不是public的:)
      

  8.   

    b默认是protected的,我晕了,抱歉!!
      

  9.   

    b默认是friendly的,不是protected的,
    friendly和protected虽然很接近但还是有区别的。楼主的目的是不可能达到的。public/protected/friendly(即默认的,没有)/private是用来控制access level的
    static是表明同一个类的不同实例公用同一个
    final标明不可继承
      

  10.   

    to  shine333(shine):
    你能告诉我类在内存里是怎么分配的吗?我找不到相关的资料,看jdk源代码也没有。
      

  11.   

    这篇文章对你有用, 仔细看看好了http://forum.java.sun.com/thread.jsp?forum=32&thread=300557&message=1191210#1191210