黑马程序员技术交流社区
标题:
关于引用类型的问题
[打印本页]
作者:
冷锋也温柔
时间:
2014-8-30 22:40
标题:
关于引用类型的问题
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性吗?为什么,能不能详细解释下
作者:
玥夜
时间:
2014-8-30 23:06
package com.itheima;
public class Demo {
public static void main(String[] args)
{
Person p1= new Person();
Person p2= new Person("zhangsan", 24);
System.out.println("p1原"+p1);
System.out.println("p2原"+p2);
change(p1, new String("王五"));
change(p2, 28);
System.out.println("p1新"+p1);
System.out.println("p2新"+p2);
}
private static void change(Person p, String name)
{
p.setName(name);
}
private static void change(Person p, int age)
{
p.setAge(age);
}
}
class Person
{
Person(){}
Person(String name, int age)
{
this.name= name;
this.age= age;
}
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
复制代码
作者:
冷锋也温柔
时间:
2014-8-30 23:48
谢谢了 运行看到结果了 精辟
作者:
低调小邦
时间:
2014-8-31 00:16
基础知识很扎实
作者:
yjiang_09
时间:
2014-8-31 02:00
肯定可以啊。
作者:
笑脸迷人
时间:
2014-8-31 07:07
只要对象中提供有修改属性的方法,而且权限足够,就能修改
作者:
奋发吧小白
时间:
2014-8-31 07:32
当做参数被传递!对象的属相不会被改变!因为对象在被创建时,属性已经确定!被改变的只是,对象的变量!
作者:
嘿~~
时间:
2014-8-31 08:06
class MoringDemo
{
public static void init(Person p){
p.setName("lisi");
p.setAge(15);
System.out.println("init方法中Person的属性值::"+p.getName()+"--->>>"+p.getAge());//①
}
public static void main(String[] args)
{
Person p = new Person("zhangsan",10);
init(p);
System.out.println("调用init方法后Person的属性值::"+p.getName()+"--->>>"+p.getAge());//②
}
}
class Person
{
private String name;
private int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
复制代码
①和②输出结果是一致的,可以看到调用init方法后,Perosn的属性值被该变了。
为什么呢?因为改变的是引用变量p的指向,这个改变是始终有效的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2