求教类变量和实例变量的区别和用法

atu8211 2005-07-24 10:47:02
程序1:
import java.io.*
class ex
{
int x,y;//实例变量
ex()
{
x=0;
y=0;
}
ex(int x,int y)
{
this.x=x;
this.y=y;
}
}
public class example
{
public static void main(String arg[])
{
ex p=new ex();
System.out.printin("x="+p.x+"+p.y);
ex pp=new ex(1,2);
System.out.println("x="+pp.x+",y="+pp.y);
Sydtem.out.println("x="+p.x+",y="+p.y);
其输出结果为:x=0,y=0
x=1,y=2
x=0,y=0
程序2
import java.io.*
class ex
{
static int x,y;//类变量
ex()
{
x=0;
y=0;
}
ex(int x,int y)
{
this.x=x;
this.y=y;
}
}
public class example
{
public static void main(String arg[])
{
ex p=new ex();
System.out.printin("x="+p.x+"+p.y);
ex pp=new ex(1,2);
System.out.println("x="+pp.x+",y="+pp.y);
Sydtem.out.println("x="+p.x+",y="+p.y);
其输出结果为:x=0,y=0
x=1,y=2
x=1,y=2
我的书只是说程序2中成员变量x和y被定义成类变量,所以对象p的成员变量x和y的值受对象pp的成员变量x和y的值影响。
有哪位前辈能把这个说的通俗一点,让人容易理解。我对类变量和实例变量的区别的理解比较模糊,我用的书是java语言及其应用,感觉不太好。
...全文
136 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
interhanchi 2005-07-24
  • 打赏
  • 举报
回复
http://www.wgqqh.com/shhgs/tij.html
这里有thinking in java的第3版中文版的下载,去看一下吧,里面讲的很清楚.

static变量就相当于是c++中的全局变量,是在类装载时就初始化的.不管你有没有创建它的对象.
每当编译了一个新类,就会产生一个Class对象(即被保存在同名的.class文件中).在运行时当我们想生成这个类的对象时,运行这个程序的jvm会首先检查这个类的Class对象是否已经加载.如未加载,jvm就会根据类名查找.class文件,并将其载入.所以java程序并不是一开始执行就会被完全加载的.

而static 初始化就是在类加载时进行的.而其他的初始化就在它之后了!
这个是static初始化的原理.
当某个类的静态方法/静态字段首次被访问时,java解释器必须查找类路径,以定位.class文件.

23,404

社区成员

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

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