1. 代码

package com.tangyuan;

public class StringDemo {

String str = new String("Good");
char[] ch = {'a','b','c'};

public static void main(String[] args) {

StringDemo sd = new StringDemo();
sd.change(sd.str, sd.ch);

System.out.println(sd.str+"and");
System.out.println(sd.ch);
//判断输出结果,很简单的,在面试中经常遇到

}
public void change(String str,char ch[]){
str = "Bad";
ch[0] = 'A';
}

}

运行结果:

good and Abc”的理解_按值传递

很显然:
string 没改变而char 改变

2. 原因分析

str是按值传递,所以在函数中对它的操作只生效于它的副本,与原字符串无关。

ch是按址传递,在函数中根据地址,可以直接对字符串进行操作。