一、最开始的示例 写代码最重要的就是实践,不经过反复试验而得出的说辞只能说是凭空遐想罢了。所以,在本文中首先以一个简单示例来抛出核心话题: public class StringAsParamOfMethodDemo { public static void main(String[] args) { StringAsParamOfMethodDemo StringAsParamOfMethodDemo=new StringAsParamOfMethodDemo(); (); } private void testA() { String originalStr = "original"; ("Test A Begin:"); ("The outer String: " + originalStr); simpleChangeString(originalStr); ("The outer String after inner change: " + originalStr) ("Test A End.");(); } public void simpleChangeString(String original) { original = original + " is changed!"; ("The changed inner String: " + original); } 这段代码的逻辑是这样的:先赋值一个String类型的局部变量,然后把这个变量作为参数送进一个方法中,在这个方法中改变该变量的值。编译运行之后,发现输出结果是这样的: Test A Begin: The outer String: original The changed inner String: original is changed! The outer String after inner change: original Test A End. 这个结果表明在方法内部对String类型的变量的重新赋值操作并没有对这个变量的原型产生任何影响。好了,这个示例的逻辑和运行结果都展示清楚了,接下来我们来对这个小程序进行分析。在这之前我们先来回顾下Java中所谓的“传值”和“传引用”问题。 二、Java中的“传值”和“传引用”问题 许多初学Java的程序员都在这个问题上有所思索,那是因为这是所谓的“C语言的传值和传指针问题”在Java语言上同类表现。 最后得出的结论是: 在Java中,当基本类型作为参数传入方法时,无论该参数在方法内怎样被改变,外部的变量原型总是不变的,代码类似上面的示例: int number = 0; changeNumber(number) {number++}; //改变送进的int变量 (number); //这时number依然为0 这就叫做“值传递”,即方法操作的