昨天拜读了一下《Thinking In Java》翻译版,其中有一段话是这样的写,大概的意思是:java方法中的参数 为final类型的,则该参数所指的对象是不可以改变的,这个 翻译真是让人蛋疼的很。
那么我来聊聊这个话的意思:
1、 java 方法中的参数如果为基本数据类型或者String 时,相当于在参数前面自动加上了final,你在方法体内 对 参数的值进行修改,并不会影响方法调用出的变量。
2、 java 方法不能让对象参数引用一个新的对象。什么意思?代码举个例子
这就是说 java方法中的参数不可能改变这个变量所指向的内存地址。
3、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 类型的 非基本类型应用,那么,我们是不可以改变参数所指向的内存地址,但是我们可以改变参数所指向对象的状态,也就是他的属性
这是我一点点才疏学浅的总结,希望高手指点