免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: cnflybird
打印 上一主题 下一主题

老题从谈 ---再次让我迷惑 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-02-07 12:48 |只看该作者
原帖由 upstorm 于 2007-2-7 11:32 发表


有传值和指针,两种,至于那种类型是传递的是指针,就不用我说了吧


偶比较本,请给个例子说明一下。谢谢。

论坛徽章:
0
12 [报告]
发表于 2007-02-07 14:05 |只看该作者
原帖由 chen_gxing 于 2007-2-7 12:48 发表


偶比较本,请给个例子说明一下。谢谢。


其实一般java传递的基本都是指针,string算是一个特例吧
你传递hashtable和类试试就知道了,比如你传递一个类进去,修改了它的某个类字段的值,函数结束之后,类字段的值不会因为函数退出而还原的

论坛徽章:
0
13 [报告]
发表于 2007-02-07 14:09 |只看该作者
当然java里面并没有指针的概念,可以理解为引用

论坛徽章:
0
14 [报告]
发表于 2007-02-07 14:14 |只看该作者
不好意思,再补充一下string是一个类,为什么会成为一个特例吧,因为java里面有int double但是并没有char*的类型,所以java里面的string就是作为普通的数据类型作为补充和使用的,而作为int double之类的参数传递都是传递值得,所以,string作为这种基本的数据类型的补充,也遵守同样的法则

论坛徽章:
0
15 [报告]
发表于 2007-02-07 14:16 |只看该作者

  1.   class A{
  2.     int i = 10;
  3.     public static void func(A a){
  4.         a = new A();
  5.         a.i = 15;
  6.    }
  7.     public static void main(String[] args){
  8.          A a = new A();
  9.          func(a);
  10.          System.out.println(a.i);  //10
  11.      }
  12.   }

复制代码


upstorm说的不对,看这个例子就知道了
java所有参数传递都是by value的,
是把栈里面的值传进去了
就上面的例子,你在试试A  b = a;就应该明白了

[ 本帖最后由 艾斯尼勒 于 2007-2-7 14:17 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2007-02-07 14:34 |只看该作者
原帖由 艾斯尼勒 于 2007-2-7 14:16 发表
[code]
  class A{
    int i = 10;
    public static void func(A a){
        a = new A();
        a.i = 15;
   }
    public static void main(String[] args){
         A a = new A();
         ...


什么意思嘛,你自己在里面new了一个类,又不传递出来,打印结果打印以前的老类,如果是你的失误,我觉得还可以原谅,否则我真的要怀疑你故意居心不良,误导大家

论坛徽章:
0
17 [报告]
发表于 2007-02-07 14:38 |只看该作者
原帖由 upstorm 于 2007-2-7 14:34 发表


什么意思嘛,你自己在里面new了一个类,又不传递出来,打印结果打印以前的老类,如果是你的失误,我觉得还可以原谅,否则我真的要怀疑你故意居心不良,误导大家


只是用这个例子证明其实java是传值的,如果传指针,那么实参的引用就应该变成新new的A类对象了

别急我在写个帖子,稍等啊

[ 本帖最后由 艾斯尼勒 于 2007-2-7 14:40 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2007-02-07 14:43 |只看该作者
原帖由 艾斯尼勒 于 2007-2-7 14:38 发表


只是用这个例子证明其实java是传值的,如果传指针,那么实参的引用就应该变成新new的A类对象了

别急我在写个帖子,稍等啊


我这里没有java环境坏了,但是如果我估计不错的,你如果去掉
a = new A();
打印出来,就应该是15吧

论坛徽章:
0
19 [报告]
发表于 2007-02-07 14:46 |只看该作者
其实理解成传递的是const 指针和应用都没有问题的,又不是所有的指针都可以改变地址的

论坛徽章:
0
20 [报告]
发表于 2007-02-07 14:47 |只看该作者
刚才写错了,是引用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP