Java编程题 为什么输出的是这样的结果?

Java编程题为什么输出的是这样的结果?packageclassDemo;publicclassExample{Stringstr=newString("good");c... Java编程题 为什么输出的是这样的结果?

package classDemo;

public class Example {

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

public static void main(String args[]) {
Example ex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str = " and ");
System.out.print(ex.ch);

System.out.println();
ex.change2(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';
}

public void change2(String str, char[] ch) {
str = "test ok";
ch[0] = 'g';
}

}

结果:

and gbc
and gbc

为什么呢?

为什么不是' and abc'?char[] ch的值怎么会改变,change()中的参数不是内部参数么?会影响外部的char[] ch呢?

谁能给一个好的解答呀?
展开
 我来答
鹏字—
2010-07-01
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
因为在Java中,数组是引用类型!'g'分配在堆内存中方法完成后,'g’并没有消失而是被ch[0]引用,所以,ch[0]的值变成‘g’;谢谢。记得加分哦!
liyingjie1
2010-07-01 · TA获得超过236个赞
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:156万
展开全部
public void change(String str, char ch[]) {
str = "test ok";
ch[0] = 'g';
}

public void change2(String str, char[] ch) {
str = "test ok";
ch[0] = 'g';
}

你这两个方法中的 str 和ch 其实就是类变量 只是在前面省略了 this.

你跟本就没有使用到方作的参数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shiva1981
2010-07-01 · TA获得超过773个赞
知道小有建树答主
回答量:638
采纳率:0%
帮助的人:750万
展开全部
基本类型数组是传引用的

(1)基本类型变量,包括char、byte、short、int、long、float、double、boolean。

(2)引用类型变量,包括类、接口、数组(基本类型数组和对象数组)。

顺便说下楼上的
不加this.的话就是用的参数的,加了this.才是类变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c0f41a64d
2010-07-04
知道答主
回答量:24
采纳率:0%
帮助的人:16.4万
展开全部
但你调change()方法的时侯传的参数是ch[] 啊,由此方法改变了那值.呵呵

不懂再留言.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式