知道美河 | 上传资料 | VIP申请 | 精品课程 | 资料搜索 | 问题反馈 | 会员手册 | 积分消费 | 积分充值 | 帐号保护
美河学习学习在线赞助VIP

美河学习在线(主站) eimhe.com

 找回密码
 建立账号
查看: 10457|回复: 6

[讨论] JAVA中的参数传值问题

[复制链接]
发表于 2007-10-16 16:22:13 | 显示全部楼层 |阅读模式
import java.awt.Point;

public class Change {
        public static void changeInt(int i) {
                i = 10;
        }
       
        public static void changeString(String str) {
                str = "Hello";
        }
       
        public static void changePoint(Point p) {
                p.x = 5;
                p.y = 5;
        }
       
        public static void main(String []args) {
                int i = 1;
                String str = "Hi";
                Point p = new Point(1, 1);
                changeInt(i);
                changeString(str);
                changePoint(p);
                System.out.println(i);
                System.out.println(str);
                System.out.println(p);
        }
}

大家说说这道程序会输出什么?
为什么 String 没改而 Point 改了,Java 是以 By value 的方式传的参数,String 和 Point 传的都是
这两个对象的 reference 的复件,为什么一个改变了其值另外一个却没有?
发表于 2007-10-16 20:06:04 | 显示全部楼层
 楼主| 发表于 2007-10-16 20:21:58 | 显示全部楼层
 楼主| 发表于 2007-10-16 21:06:49 | 显示全部楼层
自己弄明白了,呵呵, new 出来和改变对象的值是不同的
发表于 2007-11-24 14:52:13 | 显示全部楼层
发表于 2009-3-25 22:50:43 | 显示全部楼层
看清楚了main方法中输出的是String是位于main方法中定义的属性

而p那地方有写Point p = new Point(1, 1);   Point  new 了一个对象而调这个对象的关键子是  p

String str = "Hi";  着只是定义了一个String 类型的变量 与 changString()方法没有任何关系如果想要输出" Hellow" 就要写 changString cs = new changString(str);
System.out.println(cs);
发表于 2009-4-5 10:57:10 | 显示全部楼层
您需要登录后才可以回帖 登录 | 建立账号

本版积分规则

 
QQ在线咨询

QQ|小黑屋|手机版|Archiver|美河学习在线 ( 浙网备33020302000026号 )

GMT+8, 2025-5-2 18:39

Powered by Discuz!

© 2001-2025 eimhe.com.

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