是static 造成的吗?为什么?
classC{publicstaticintx;publicinty;}publicclassCc{publicstaticvoidmain(Stringargs[]){...
class C{
public static int x;
public int y;
}
public class Cc{
public static void main(String args []){
C a=new C();
C b=new C();
a.x=10;
a.y=10;
b.x=20;
b.y=20;
System.out.println(a.x);
System.out.println(a.y);
System.out.println(b.x);
System.out.println(b.y);
}
}
为什么输出的是
20
10
20
20呢?
static 到底有什么作用?怎么会造成这样的结果呢? 展开
public static int x;
public int y;
}
public class Cc{
public static void main(String args []){
C a=new C();
C b=new C();
a.x=10;
a.y=10;
b.x=20;
b.y=20;
System.out.println(a.x);
System.out.println(a.y);
System.out.println(b.x);
System.out.println(b.y);
}
}
为什么输出的是
20
10
20
20呢?
static 到底有什么作用?怎么会造成这样的结果呢? 展开
展开全部
你好!首先很明确告诉你是是static 造成的,
public static int x;说明x是静态属性。y是非静态属性。
注意:静态属性是属于整个类的,只保存一份,每个类中的对象是共享的,每个类中的对象都可以修改它!(即,这里的X是属于类C的,不管你创建多少个C的对象,无论你在其它类里怎么新建C的对象,C a=new C(); C b=new C();),关于静态X,可以理解为只有一个,a和b共享它)
非静态的属性是属于每个对象的,每个对象都保存一份,互相不能修改对方的(即:这里的a有一个专属它的Y,b也有一个专属它的Y)。
明白了这个后,结果你就知道为什么了吧,因为静态的X只有一个,在对象a中赋值为10,然后b在赋值为20,所以结果就是这样!!
那么现在再来谁static有说明用:静态的属性可以方便不同的对象去调用,去修改它!
但是静态的方法只能操作、调用和访问静态的方法和属性!非静态方法却可以访问静态和非静态的方法!但是静态方法和属性可以直接 类名.方法(或属性) 来调用,非静态的必须新建对象,在通过 对象.方法和属性 来调用
呵呵 希望对你有帮助!!
public static int x;说明x是静态属性。y是非静态属性。
注意:静态属性是属于整个类的,只保存一份,每个类中的对象是共享的,每个类中的对象都可以修改它!(即,这里的X是属于类C的,不管你创建多少个C的对象,无论你在其它类里怎么新建C的对象,C a=new C(); C b=new C();),关于静态X,可以理解为只有一个,a和b共享它)
非静态的属性是属于每个对象的,每个对象都保存一份,互相不能修改对方的(即:这里的a有一个专属它的Y,b也有一个专属它的Y)。
明白了这个后,结果你就知道为什么了吧,因为静态的X只有一个,在对象a中赋值为10,然后b在赋值为20,所以结果就是这样!!
那么现在再来谁static有说明用:静态的属性可以方便不同的对象去调用,去修改它!
但是静态的方法只能操作、调用和访问静态的方法和属性!非静态方法却可以访问静态和非静态的方法!但是静态方法和属性可以直接 类名.方法(或属性) 来调用,非静态的必须新建对象,在通过 对象.方法和属性 来调用
呵呵 希望对你有帮助!!
展开全部
据我理解应该是因为static造成的。
因为我的理解一个static 变量属于一个类,而不是一个对象。
如果一个属性是static,那么所有这个类生成的对象都指向同一个属性,因为它是类的属性而不是对象的属性。
以上我的观点不保证正确性,仅供参考,可能有一些地方用的术语不大对,希望你能理解。
因为我的理解一个static 变量属于一个类,而不是一个对象。
如果一个属性是static,那么所有这个类生成的对象都指向同一个属性,因为它是类的属性而不是对象的属性。
以上我的观点不保证正确性,仅供参考,可能有一些地方用的术语不大对,希望你能理解。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修饰为static的成员变量不是存放在堆里的,对象共同引用相同的static成员变量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态变量在内存中是一份的,无论你创建多少个对象,static类型的变量只有一份。所以打印了相同的数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是static造成的,static类型的变量在内存中只有一个拷贝。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询