新手如果太简单了,大家别笑话啊。
以前我发过一帖关于这方面问题,那时候是用Integer做的例子http://topic.csdn.net/u/20080316/10/4a928676-9e66-4015-b13f-3603512db582.html,因为Integer没有set方法,所以今天我写了个Javabean来说例子;Javabean就是个Person类,不用多说。
第一个类:public class ChangeTest {
public void changM(Person person){
person.setId("1243");
}
public static void main(String[]args){
ChangeTest change=new ChangeTest();
Person person=new Person();
person.setId("678");
change.changM(person);
System.out.println(person.getId());
}
}
结果:1243
第二个类:public class ChangeTest {
public void changM(Person person){
person=new Person();
person.setId("1243");
}
public static void main(String[]args){
ChangeTest change=new ChangeTest();
Person person=new Person();
person.setId("678");
change.changM(person);
System.out.println(person.getId());
}
}
结果:678
写了一个看地址的,第三个类:
public class ChangeTest {
public void changM(Person person){
System.out.println(person); person=new Person();
person.setId("1243");
System.out.println(person); }
public static void main(String[]args){
ChangeTest change=new ChangeTest();
Person person=new Person();
System.out.println(person);
person.setId("678");
change.changM(person);
System.out.println(person);
System.out.println(person.getId());
}
}
结果:
Person@1e63e3d
Person@1e63e3d
Person@1004901
Person@1e63e3d
678
现在该我问了:当我在changM方法中直接写person.set时能改变外面对象的值,也就是说这个变量是指向外面那个对象。而当我写person=new Person()时,这里产生了两个对象了,这个person和外面的person指向的地址就不同了,也就是在内存空间有两片不同的了。那么java是怎么区分这两种情况的呢,如果没new新的时person和形参person指同一片内存。而当有了new Person()时变成不同的了。
以前我发过一帖关于这方面问题,那时候是用Integer做的例子http://topic.csdn.net/u/20080316/10/4a928676-9e66-4015-b13f-3603512db582.html,因为Integer没有set方法,所以今天我写了个Javabean来说例子;Javabean就是个Person类,不用多说。
第一个类:public class ChangeTest {
public void changM(Person person){
person.setId("1243");
}
public static void main(String[]args){
ChangeTest change=new ChangeTest();
Person person=new Person();
person.setId("678");
change.changM(person);
System.out.println(person.getId());
}
}
结果:1243
第二个类:public class ChangeTest {
public void changM(Person person){
person=new Person();
person.setId("1243");
}
public static void main(String[]args){
ChangeTest change=new ChangeTest();
Person person=new Person();
person.setId("678");
change.changM(person);
System.out.println(person.getId());
}
}
结果:678
写了一个看地址的,第三个类:
public class ChangeTest {
public void changM(Person person){
System.out.println(person); person=new Person();
person.setId("1243");
System.out.println(person); }
public static void main(String[]args){
ChangeTest change=new ChangeTest();
Person person=new Person();
System.out.println(person);
person.setId("678");
change.changM(person);
System.out.println(person);
System.out.println(person.getId());
}
}
结果:
Person@1e63e3d
Person@1e63e3d
Person@1004901
Person@1e63e3d
678
现在该我问了:当我在changM方法中直接写person.set时能改变外面对象的值,也就是说这个变量是指向外面那个对象。而当我写person=new Person()时,这里产生了两个对象了,这个person和外面的person指向的地址就不同了,也就是在内存空间有两片不同的了。那么java是怎么区分这两种情况的呢,如果没new新的时person和形参person指同一片内存。而当有了new Person()时变成不同的了。
解决方案 »
- 关于文件传输限速的问题
- 求助,如何用java访问exchange发起会议?
- 使用 group by 子句后的ResultSet的问题!!
- JAVA中的路径问题?给讲一下相对路径,当前目录下是什么意思啊,
- 在环境变量中如何将我的工作目录设为java编译时寻找原文件的默认路径?
- 答过“ 大家都来谈谈自己学习Java的经验或看法!(来者有分)”帖子的兄弟,进行第二次接分啦!!
- 是不是每建立完一个数据表都会自动生成一个默认的"id"呀?
- 关于 JBUILDE 与 JRUN!!!!!!1
- 高分,不够再加!!如何用java applet实现在客户端浏览器中显示即时的web server的系统时间
- 关于单例模式的这两段话是什么意思?不解
- ###【荣誉榜】感谢nihuajie05 配合我做系统功能测试,奖励技术分20
- JAVA初学者之旅(希望对JAVA初学者学习有帮助)
public void changM(Person person){
person.setId("1243");
}
第二种
public void changM(Person person){
person=new Person();
person.setId("1243");
}