问个java基础题
public class Item {
private String desc;
public String getDescription() {return desc;}
public void setDescription(String d){desc=d;}
public static void modifyDesc(Item item,String desc){
item=new Item();
item.setDescription(desc);
}
public static void main(String[] args) {
Item it1=new Item();
it.setDescription("一");
Item it2=new Item();
it2.setDescription("二");
modifyDesc(it1,"三"); // 问题在这里
System.out.println(it1.getDescription());
System.out.println(it2.getDescription());
}
}
it1传给modifyDesc方法 在里面new了一个新对象 赋给它了 it1不就指向新对象了吗 为什么it1.getDescription还打印一呢
public static void modifyDesc(Item item,String desc){
item=new Item(); -->这句给删啦
item.setDescription(desc);
}
因为modifyDesc(it1,"三"); 后item 指向啦和it1 同一个对象
item 再new 的话,item就会指向一个新的对象,it1指向还是本来那个
item是个局部变量,在栈内存中分配,方法结束后,item也会消亡
删了后,item与it1指向了同一对象,通过item直接修改属性值,所以就行啦
这时item相当于it1的一个副本
也就是说item不是代替it1 而是和it1共同存在
恩
UP!
传递的是引用地址...想想C++中的指针就明白了,你方法里面的new相
相关问答:
通过java程序,先编译c程序,如出现错误,提示C程序中的错误,编译成功就运行,显示C的运行结果,最好把C的运行时间和内存等都显示出来
各位大哥大姐帮帮忙,小弟感激不尽!
用java的进程类试试
我给你转 ......
我的开发的平台是Myeclipes6.0 + tomcat5.x + mysql
我所有的编码方式都是用的UTF-8
我只用了Strtus框架
在一个form中如下用的是post的提交方式:
<form class="form" action=&quo ......
查API,看到FeatrueFactory有这个方法
public Feature createPolyLine(double[][] thePoints,
R ......
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.URL;
import java ......