六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 42|回复: 0

java传递的是引用,传递的是句柄,改变值,值传递的问题

[复制链接]

升级  61.3%

726

主题

726

主题

726

主题

探花

Rank: 6Rank: 6

积分
2226
 楼主| 发表于 2013-1-27 05:13:27 | 显示全部楼层 |阅读模式
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.println(ex.str+" and");  System.out.println(ex.ch); } public void change(String str,char ch[]){  str="test ok";  ch[0]='g'; }} 
这个题的输出结果为
good and
gbc
为什么str的值没变
而ch[]的值变了呢
答案是Java变量传递的是“句柄”
句柄,就是一个引用,相当于C语言里的指针
java对象指向的是内存中的一个地址
 
特此更正:java变量传递是值传递,以前理解有错误,特别感谢rrsy23给予斧正
 
黑色头发  http://heisetoufa.iteye.com
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表