public class A{
String str = "good";
char[] ch = {'a','b','c'};
int num = 10;
public void change(String str,char[] ch,int num){
str = "test ok";
ch[0] = 'g';
num = 20;
}
public static void main(String[] args) {
A a = new A();
a.change(a.str,a.ch, a.num);
System.out.println(a.str);
System.out.println(a.ch);
System.out.print(a.num);
}}
String str = "good";
char[] ch = {'a','b','c'};
int num = 10;
public void change(String str,char[] ch,int num){
str = "test ok";
ch[0] = 'g';
num = 20;
}
public static void main(String[] args) {
A a = new A();
a.change(a.str,a.ch, a.num);
System.out.println(a.str);
System.out.println(a.ch);
System.out.print(a.num);
}}
解决方案 »
- 求更正:为什么不移动。
- 一面试题,急!!!有望各位仁兄前来探讨
- swing JComboBox 如何设置key显示 取值value
- JTable中的celleditor用jcombobox来实现,然後在jcombobox上面添加ItemListener,为什么这个监听会执行两遍 大家可以试试 不是个别代码问题
- 与java共舞啊,有兴趣的一起讨论啊
- 输出xml文件时如何控制换行?(在线等)
- java里表格的拖放问题?(急急急!)
- 如何用数据库中读出的流创建临时文件??????????
- 如何线程安全的访问
- 请问各位,开发JSP和Servlet以及JavaBean并且用在Tomcat上面,要不要给Sun交什么授权费用阿?
- java.lang.NullPointerException 什么情况
- java如何搭建本地WLAN,运行与有无线网卡的PC机,并用android客服端与其通信
this.str = "test ok";
ch[0] = 'g';
this.num = 20;
}你换成this.str ,this.num就全部改变了 要不然你str=""相当与String str=“” 根本不会给对象赋值
因为数组是引用数据类型,所以ch的值是一个确定的地址,这个在栈内存里的ch变量储存的是一个地址值,这个地址值对应的是堆内存里的一个空间,所以传递这个地址给方法的时候,数组可以改变,而其他的值如你写的str,num只是一个复制品,并不影响实例A的的成员变量。如果你在其前插入this,表示你要控制这个实例的成员变量,这样才能改变str和num的值。