在Java中,一切都是按值传递
问:你能提供一些权威报价支持说“在Java中,一切都是按值传递”?答:从Java编程语言,由詹姆斯?高斯林等。第3版(pg . 56)::
<人力资源颜色=" # 0000 ff "/>
一些人会说错误的对象是通过“引用”。在编程语言设计中,通过引用这个词正确意味着当一个参数传递给一个函数,调用函数初始值的引用,不是一个变量值的副本。如果函数修改其参数,调用代码中的值将被改变,因为参数和参数在内存中使用相同的槽。Java编程语言不通过引用传递对象;按值传递对象引用。因为两份相同的实际参考引用同一个对象,通过更改/><你> Java教程
:
<人力资源颜色=" # 0000 ff "/><你>经过价值
Java方法,按值传递的参数。
调用时,该方法接收传入的变量的值。当
原始类型的论点是,按值传递意味着该方法不能改变其值。
当引用类型的论点是,按值传递意味着
方法不能改变对象引用,但是可以调用对象的方法
和修改变量的对象访问。这通常是混乱的
来源——一个程序写的方法试图修改
/><你>价值测试问题从太阳:
在Java编程中,所有的方法按值传递的参数。
答:真正的在Java中,一切都是按值传递的,除非你认为詹姆斯·高斯林忘记他是如何发明了Java,和太阳不知道Java是如何工作的。如果我们都同意这些不是案件。问题应该改变,如何理解“在Java中,一切都是按值传递”。如果你去上下一个小,你会在这里找到很多的帮助。两个例子来证明:
例子; arr[1]=班恕?//这里不会发生任何改变 交换(arr [0], arr [1]); system . out。println (arr [0] +”、“+ arr [1]);//你好,你好//两个字符串实际上是交换 交换(arr 0 1); system . out。println (arr [0] +”、“+ arr [1]);//嗨,你好 }//无用的交换方法,因为你交换副本//两个字符串的内部参考方法//字符串外不受影响。 公共静态空间交换(琴弦s1, s2) { 字符串tmp=零; tmp=s1; s1, s2; s2=tmp; }//真正的实际的交换//交换数组元素的两个指标//对于排序算法等。//引用的arr永远不会改变(按值传递)//但arr的内容将永久改变//自复制arr仍然引用同一个对象的引用。 公共静态空间交换(字符串arr []、int ix1 int ix2) { 字符串tmp=零; tmp=arr [ix1]; arr [ix1]=arr [ix2]; 加勒比海盗[ix2]=tmp; } }
两个例子(代码):
公共类ParamTest {
/* *
* @param args
* @author Jianming
* @version 1.0
*/公共静态void main (String [] args) {
/*
*测试alt="在Java中,一切都是按值传递">结束。
引用> [@more@]在Java中,一切都是按值传递