kaobian 发表于 2013-2-3 12:20:20

聊聊Java 方法中的参数

昨天拜读了一下《Thinking In Java》翻译版,其中有一段话是这样的写,大概的意思是:java方法中的参数 为final类型的,则该参数所指的对象是不可以改变的,这个 翻译真是让人蛋疼的很。

那么我来聊聊这个话的意思:
1、 java 方法中的参数如果为基本数据类型或者String 时,相当于在参数前面自动加上了final,你在方法体内 对 参数的值进行修改,并不会影响方法调用出的变量。
2、 java 方法不能让对象参数引用一个新的对象。什么意思?代码举个例子
pubic class Test{       public void changeArguments(Bean bean){       bean.name = "kaobian";       bean = new Bean();       bean.name="go out";    }      public void static main(String[] args){       Bean bean = new Bean();       bean.name="hello world";       new Test().changeArguments(bean);       System.err.println("modify bean " + bean.name);       //返回的是kaobian而不是go out    } } class Bean {    public String name ;    public Bean(){    } }

这就是说 java方法中的参数不可能改变这个变量所指向的内存地址。
3、java 方法中的参数为final 类型的 非基本类型应用,那么,我们是不可以改变参数所指向的内存地址,但是我们可以改变参数所指向对象的状态,也就是他的属性


这是我一点点才疏学浅的总结,希望高手指点
页: [1]
查看完整版本: 聊聊Java 方法中的参数