没用代码格式,sry,重新发下。public class Person {
public static int age=0; //一个静态属性
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
}public class Test1 {
public static void main(String[] args) {
Person p=new Person();
p.setAge(10);//先将static属性设置为10
}
}public class Test2 {
public static void main(String[] args) {
Person p=new Person();
System.out.println(p.getAge()); //为什么这边出现的是0,而不是Test1中设置的10,static属性不是所有对象所公用么?
}}例子十分简单,我之前一直以为static属性是所有对象共用,能达到一改全改的目的,可以现在突然跑出来这个问题,我也不知道是不是之前理解错了,求指点。
public static int age=0; //一个静态属性
public int getAge(){
return age;
}
public void setAge(int age){
this.age=age;
}
}public class Test1 {
public static void main(String[] args) {
Person p=new Person();
p.setAge(10);//先将static属性设置为10
}
}public class Test2 {
public static void main(String[] args) {
Person p=new Person();
System.out.println(p.getAge()); //为什么这边出现的是0,而不是Test1中设置的10,static属性不是所有对象所公用么?
}}例子十分简单,我之前一直以为static属性是所有对象共用,能达到一改全改的目的,可以现在突然跑出来这个问题,我也不知道是不是之前理解错了,求指点。
这个不是new的问题吧即使我在两个不同的main中,取一个单例模式类的instance,这两个实例对象也是不同的。
public class Test2 {
public static void main(String[] args) {
Test1 p1 = new Test1();
p1.main(args);//你在代码里加上这一句就正常了!
Person p=new Person();
System.out.println(p.getAge()); //为什么这边出现的是0,而不是Test1中设置的10,static属性不是所有对象所公用么?
}
结果是10
}
public static String id = "id1";
}测试类 public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1.id);
s1.id = "id2";
System.out.println(s1.id);
Student s2 = new Student();
System.out.println(s2.id);
}测试类2 public static void main(String[] args) {
Student s1 = new Student();
System.out.println(s1.id);
s1.id = "id1";
System.out.println(s1.id);
}可以发现,测试类1中s1对id的修改影响了s2这个新new出来对象的值,但并不影响另外的测试类的s1的值。
关于static变量的线程间共享,进程间不共享
对的..你的程序都不是同一个.当然不会共享!就想QQ跟YY怎么会共享呢!
http://wenku.baidu.com/link?url=oHMe-5ct-Sc3GH8viI88eDJdlM1s5RquUCzgJXcLnN6iFrcA39CqnsnlLL6C7nmTLzvhz3zH-OP-GFHMhb19miF8onegWDU5kibNPO_7wuG
参考这里吧!前面没说那么复杂是因为怕楼主陷进去!先不必管也可以的!你只要知道启动两个MAIN都不是一个程序了,所以不共享!不建议楼主去研究下去!因为涉及底层了!建议日后学好有兴趣再来研究!
谢谢你啊,我清楚了。之所以我有这个疑问确实是对一个程序与另外一个程序的边界模糊不清,之前一直使用一个main去做Demo,都很顺利,没啥问题。昨天突然想了下,如果是在web项目中,有使用到含static属性的类,那么多个不同的请求之间,是不是共享static属性呢?于是我想用一个main方法来代替一个请求,实际上错就错在这里,两个独立的main已经属于不同程序了。现在我知道了,在一个web应用中,多个不同请求之间的是可以实现static属性共享的。
谢谢你啊,我清楚了。之所以我有这个疑问确实是对一个程序与另外一个程序的边界模糊不清,之前一直使用一个main去做Demo,都很顺利,没啥问题。昨天突然想了下,如果是在web项目中,有使用到含static属性的类,那么多个不同的请求之间,是不是共享static属性呢?于是我想用一个main方法来代替一个请求,实际上错就错在这里,两个独立的main已经属于不同程序了。现在我知道了,在一个web应用中,多个不同请求之间的是可以实现static属性共享的。
不客气的!懂了就结贴!接分吧!