java方法参数传值传引用的一点看法
2008-02-23 09:39:02来源:互联网 阅读 ()
程序一 传的对象值是改变的。
public class Test
{
public Test()
{
int [] count={5};
change(count);
System.out.println(count[0]);
}
public void change(int [] counts)
{
counts[0]=6;
System.out.println(counts[0]);
}
public static void main(String [] args)
{
Test t=new Test();
}
}
程序一中,输出结果都是6,change(count); 把对象的一份引用拷贝传给change(),这个拷贝跟原来的引用都是指向同一个对象。所以改变引用拷贝的值,对象的值也跟着改变。
class Foo{
int i=0;
}
public class A{
public static void main(String args[]){
Foo f=new Foo();
add(f);
System.out.println(f.i);
}
public static void add(Foo f){
f=new Foo();
f.i ;
}
}
输出结果是0
程序2中,也是传一份引用的拷贝,但在 add()方法中,f=new Foo(); NEW出了一个新的对象,所以引用的拷贝指向了一个新的OBJECT。原来的值还是没有改变。
public class Example{
String str=new String("good");
char[]ch={'a','b','c'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.print(ex.str " and ");
Sytem.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}
程序3输出的是 good and gbc.
String 比较特别,看过String 代码的都知道, String 是 final的。所以值是不变的。
上面三个例子可以说明一些问题。有不同意见大家可以讨论讨论。QQ:danke 56355337
上一篇: JScud语法加亮程序初次发布
下一篇: Eclipse Release Build: 3.1正式发布! ——JDT新特性(二)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash