该死的公共变量~~~ 气死我了

jhacker7 2008-04-24 07:40:07
废话不说! 情况是这样的我的程序中有两个包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 中用不了, 郁闷啦~~~~~~~~~~~
...全文
300 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
wensheng_zh2007 2008-04-25
  • 打赏
  • 举报
回复
对阿,你没执行Y方法
我是风 2008-04-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mscf 的回复:]
是Y方法没机会被执行吧
[/Quote]
oogamiyiqilou 2008-04-25
  • 打赏
  • 举报
回复
Y 没有执行 X的值当然不会变了
楼主可以把Y函数做成构造函数
这样在调用的时候就变了
haizj0216 2008-04-25
  • 打赏
  • 举报
回复
楼主有钱人啊,jf
jackzlj 2008-04-25
  • 打赏
  • 举报
回复
呵呵!~!
不是吧!~
jiaping108 2008-04-25
  • 打赏
  • 举报
回复
表告诉偶你先在A.a中调用了一下B.Y,然后再去取B.X
如果是这样的话肯定取到的还是空了,B.Y处理过的X跟A.X不是一个X哈
guoxiaopeng1982 2008-04-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 jhacker7 的帖子:]
废话不说! 情况是这样的我的程序中有两个包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 中用不了, 郁闷啦~~~~~~~~~~~
[/Quote]
第一,编程思想里面说过,两个包直接的数据传递尽量不要使用static数据
第二,建议你给类B.b中变量X一个get方法,这样你在类A.a中可以很好的调用的
第三,请检查你是否在类A.a中先调用的类B.b中的函数Y,然后再使用的b.X的方式读变量,一定注意先后顺序~~~

以上三点就是解决方法~~~
a_nuo 2008-04-25
  • 打赏
  • 举报
回复
顶25楼的
liuwei424 2008-04-25
  • 打赏
  • 举报
回复
哈哈,朋友,你有点晕乎哦
胡矣 2008-04-25
  • 打赏
  • 举报
回复
根据你的描述,模拟出下面程序.

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);
}
}

hx2044 2008-04-25
  • 打赏
  • 举报
回复
把代码贴出来看看就知道了,说那么多干啥.
huxinyu929 2008-04-25
  • 打赏
  • 举报
回复
直接用String的构造方法么。。
还用什么Y阿。
assdust110 2008-04-25
  • 打赏
  • 举报
回复
除非你在b.getX中隐式调用Y方法,要不就不可能改变X值

或者你吧X改成static的,或者不用b.X拿变量

说完了 拿分来
gjgj3368 2008-04-25
  • 打赏
  • 举报
回复
先调用Y方法啊
再用b.X的方式读变量
shili150 2008-04-25
  • 打赏
  • 举报
回复
接分
cnjzy0106 2008-04-25
  • 打赏
  • 举报
回复
汗~一看就是Y没执行!怎么可能有值呢!!
panxuan 2008-04-25
  • 打赏
  • 举报
回复
Y函数没有执行而已。
Shine_Panda 2008-04-25
  • 打赏
  • 举报
回复
一个变量 lz 也不用发这么大的火嘛。
身体要紧
brant_yan 2008-04-25
  • 打赏
  • 举报
回复
滞后编译
pjcc001 2008-04-25
  • 打赏
  • 举报
回复
推荐一个网站


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

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧