| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 489 人关注过本帖
标题:[求助]看不懂的程序!
只看楼主 加入收藏
ada518618
Rank: 1
等 级:新手上路
帖 子:184
专家分:0
注 册:2006-3-27
收藏
 问题点数:0 回复次数:3 
[求助]看不懂的程序!

class Member{
static int classVar;
int instanceVar;
static void setClassVar(int i){
classVar=i;
}
static int getClassVar(){
return classVar;
}
void setInstanceVar(int i){
classVar=i;
instanceVar=i;
}
int getInstanceVar(){
return instanceVar;
}
}
public class MemberTest{
public static void main(String args[]){
Member m1=new Member();
Member m2=new Member();
m1.setClassVar(1); //这里不是给ClassVar赋值1了吗!?可是为什么是打印出下面的2呢!?
m2.setClassVar(2);
System.out.println("m1.ClassVar="+m1.getClassVar()+" "+"m2.ClassVar="+m2.getClassVar());
m1.setInstanceVar(11);
m2.setInstanceVar(22);
System.out.println("m1.InstanceVar="+m1.getInstanceVar()+" "+"m2.InstanceVar="+m2.getInstanceVar());
}
}
打印结果:
m1.classVar=2 m2.classVar=2
m1.InstanceVar=11 m2.InstanceVar=22
麻烦看得懂的给我清楚地解释一下好吗!?

2006-04-22 00:55
xuyijin
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2006-4-13
收藏
得分:0 
classVar是一个静态的变量,在内在中只开辟一个地址!即对象m1,m2共用一个变量classVar,当m1给ClassVar赋值1,然后m2再给ClassVar赋值就会覆盖原来的值!所以就人打印出后面的值了!

初学java,希望各位大虾多多指教!!
2006-04-22 02:01
xuyijin
Rank: 1
等 级:新手上路
威 望:1
帖 子:90
专家分:0
注 册:2006-4-13
收藏
得分:0 
改成这样就可以了!
class Member{
/*static*/ int classVar; //不要定义面静态变量
int instanceVar;
/*static*/ void setClassVar(int i){ //不要定义面静态方法
classVar=i;
}
/*static*/ int getClassVar(){ //不要定义面静态方法
return classVar;
}
void setInstanceVar(int i){
classVar=i;
instanceVar=i;
}
int getInstanceVar(){
return instanceVar;
}
}
public class MemberTest{
public static void main(String args[]){
Member m1=new Member();
Member m2=new Member();
m1.setClassVar(1); //这里不是给ClassVar赋值1了吗!?可是为什么是打印出下面的2呢!?
m2.setClassVar(2);
System.out.println("m1.ClassVar="+m1.getClassVar()+" "+"m2.ClassVar="+m2.getClassVar());
m1.setInstanceVar(11);
m2.setInstanceVar(22);
System.out.println("m1.InstanceVar="+m1.getInstanceVar()+" "+"m2.InstanceVar="+m2.getInstanceVar());
}
}

初学java,希望各位大虾多多指教!!
2006-04-22 02:08
★王者至尊★
Rank: 1
等 级:新手上路
帖 子:528
专家分:0
注 册:2006-3-28
收藏
得分:0 
注意static修饰符的使用
1,静态域
类的成员变量 不属于任何方法 可以直接使用类名引用它
2,静态方法
属于整个类,在内存中分配公共的内存空间
不能直接操纵和处理类的非静态域,只能处理属于类的成员变量
可以直接使用类名调用类的静态方法
3,静态初始化
初始化静态变量 静态初始化在所属类被加载到内存时进行

------Java 爱好者,论坛小混混,学习中------
2006-04-22 13:01
快速回复:[求助]看不懂的程序!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011959 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved