废话不说! 情况是这样的我的程序中有两个包A,B。 这两个包中有两个类A.a , B.b ; 在类B.b中, 把变量X设为public static String X = ""; 型 。 这个类中有个函数Y, 在Y中把变量X的值设为"joey" , 在类A.a中 , 先用import把B这个包导入, 再用b.X的方式读变量怎么还是""(空值)呢 ? 是不是B.b类中的函数Y没起作用, 于是在函数Y中写System.out.print(X);
输出正确, 为啥在A.a 中用不了, 郁闷啦~~~~~~~~~~~

解决方案 »

  1.   

    有点晕……
    你B.b中的Y函数,执行了吗?得手动的执行啊……
    比如,在A.a中执行b.Y();然后b.X就会按照你b.Y()中那样进行赋值了。
      

  2.   

    大哥,你还没执行Y方法,它怎么让执行X="joey";语句阿
    当然,你在Y方法中写了System.out.print(X); 
    你肯定按照这个顺序写的
    X="joey";
    System.out.print(X); //已经给X附值了!所以输出了!
      

  3.   

    是啊.
    你在 A.a 类中有没有调用 b类中的 Y()方法呢.
    如果没有调用 那么 X的值当然还是空拉.
      

  4.   

    package A;import B.b;public class a {    /**
         * @param args
         */
        public static void main(String[] args) {
            System.out.println(b.X);//这个时候,Y方法没被调用过,所以还是""
            new b().Y();//当你这么执行的时候,执行了Y方法内部代码,所以给X"joey"
        }}
    package B;public class b {    public static String X = "";    public void Y() {
            X = "joey";
            System.out.print(X);
        }
    }
      

  5.   

    你在 A.a 类中有没有调用 b类中的 Y()方法呢. 
    如果没有调用 那么 X的值当然还是空拉. 
      

  6.   

    公共的静态变量最好是不要可变的,这样做是非常危险的,特别的多线程开发,一般情况下都是用这种方式来做常量,
    定义的时候都用final限制否则这种情错误很难被发现,
      

  7.   

    public static String X = ""; 你可以把X理解为类B.b的类成员,而不是对象成员
    b.X由于这个类成员没有被初始化,所以是null
      

  8.   

    LZ说下你的Y在哪里执行了,关注。
      

  9.   

    除非你在b.getX中隐式调用Y方法,要不就不可能改变X值或者你吧X改成static的,或者不用b.X拿变量说完了  拿分来
      

  10.   

    直接用String的构造方法么。。
    还用什么Y阿。
      

  11.   

    根据你的描述,模拟出下面程序.package A;
    import B.b;
    public class a {
        public static void main(String[] args) {
            System.out.println(b.X);//静态变量可以直接调用
            b.Y();//这里无法调用,因为Y非静态方法,要用具体的对象来调用.这样new b().Y();就行.
        }
    }
    package B;
    public class b {
        public static String X = "";
        public void Y() {
            X = "joey";
            System.out.print(X);
        }
    }
      
      

  12.   

    第一,编程思想里面说过,两个包直接的数据传递尽量不要使用static数据
    第二,建议你给类B.b中变量X一个get方法,这样你在类A.a中可以很好的调用的
    第三,请检查你是否在类A.a中先调用的类B.b中的函数Y,然后再使用的b.X的方式读变量,一定注意先后顺序~~~以上三点就是解决方法~~~
      

  13.   

    表告诉偶你先在A.a中调用了一下B.Y,然后再去取B.X
    如果是这样的话肯定取到的还是空了,B.Y处理过的X跟A.X不是一个X哈
      

  14.   

    Y 没有执行 X的值当然不会变了
    楼主可以把Y函数做成构造函数
    这样在调用的时候就变了
      

  15.   

    static 的用new是new不出来的
      

  16.   

    推荐一个网站
    山西交友——寻找你人生的另一“伴”。
    贵族交友网:www.sxgzjyw.cn就是专门为由于工作繁忙,人际圈有限,在爱情路上苦苦等待的朋友提供了更多的择偶机会。