首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一路面试题 求解答

2011-12-14 
一道面试题 求解答Java codepublic class Example{String str new String(good)char[] ch {a,b

一道面试题 求解答

Java code
public class Example{  String str = new String("good");  char[] ch = {'a','b','c'};  public void static main(String[] args){    Example ex = new Example();    ex.change(ex.str,ex.ch);    System.out.print(ex.str + " and ");    System.out.print(ex.ch)  }  public void change(String str,char ch[]){    str = "test ok";    ch[0] = 'g';  }}


答案是good and gbc

[解决办法]
public void change(String str,char ch[]){
str = "test ok";
ch[0] = 'g';
}

change方法里的str和Example的属性str是不同的两个变量,开始它们都指向"good"对象
在change方法中,str = "test ok";使得change方法的str变量指向新的"test ok"对象,但是Example的属性str的指向没有发生任何变化,所以ex.str还是"good"
同样的change方法中的ch和Example的属性ch是两个不同的变量,开始它们都指向一个字符数组{'a','b','c'},在change中,ch[0] = 'g'; 改变ch变量指向的数组对象的第一元素的值,因为Example的属性ch也指向相同的数组对象,所以Example的属性ch的第一个元素也就发生了变化,所以ex.ch就变成了gbc
[解决办法]
恩 数组写入的是数据区吧 所以值被修改了

热点排行