Java基础11java方法中只有值传递,没有引用传递

Posted Leon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础11java方法中只有值传递,没有引用传递相关的知识,希望对你有一定的参考价值。


public class Example {
String testString = new String("good");
char[] testCharArray = {\'a\',\'b\',\'c\'};

public static void main(String[] args){
Example ex = new Example();
ex.change(ex.testString,ex.testCharArray);
System.out.println(ex.testString);
System.out.println(ex.testCharArray);
}

public void change(String testString,char[] testCharArray){
testString = "hhhhhh";
testCharArray[0] = \'w\';
}
}
 
这段代码最后输出的是什么?
考虑之后给出你的答案。
 
good
wbc

 

首先要明白的java的方法传递的究竟是什么?

对于基本类型,传递的是基本类型的值,而对于引用类型传递的是地址

所以无论是什么,传递的都是值,因为你可以把地址理解成9x0000这种,也是一个值。

所以传递的都是值。

那么方法中什么时候会改变原来的值,什么时候不会呢?

1、只要是基本类型,传递的是值,这个值是复制了一份出来的,所以怎么都不会改变。

2、引用类型,传递的是地址,如果这个地址变了,那么原来的值肯定不变。

3、引用类型,传递的是地址,如果地址没变,而改变了地址对应的对象的属性,那么久会改变原来的值。

 

如果还听不明白,那么简单的说,只要在方法里面把传进来的对象重新赋值一个new的对象,那么原来是不变得。

如同方法中的string,重新赋值了一个字符串,这个时候地址以及改变了,所以原来那个不变。

而char数组,没有重新复制一个新的char数组,而是把char数组中的元素改变了,那就会改变原来的值。

 

对于内存的分析,下面这篇博客特别清楚,我就不多说了。

搞懂这个真的很重要。

友情链接:【Java基础】12、java中方法的参数传递机制

以上是关于Java基础11java方法中只有值传递,没有引用传递的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中只有值传递

java方法中只有值传递,没有引用传递

java方法参数传递方式只有----值传递!

Java基础 -- new对象实体与对象引用方法的返回值构造方法== 与 equalshashCode 与 equals为什么Java只有值传递

3.Java基础面试题

老生常谈--Java值传递和引用传递