java 练习题 答案为什么是B?
4.指出下列程序运行的结果publicclassExample{Stringstr=newString("good");char[]ch={'a','b','c'};pu...
4.指出下列程序运行的结果
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 ");
Sytem.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}
A、 good and abc
B、 good and gbc
C、test ok and abc
D、 test ok and gbc 展开
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 ");
Sytem.out.print(ex.ch);
}
public void change(String str,char ch[]){
str="test ok";
ch[0]='g';
}
}
A、 good and abc
B、 good and gbc
C、test ok and abc
D、 test ok and gbc 展开
3个回答
展开全部
前面的 good and 应该能理解吧,就是后面的gbc对吧?因为在JAVA中,数组是按引用传递的,就是C中的地址传递,而变量默认是值传递
追问
不理解,概念掌握的不好,前面也不理解,能详细点吗
追答
ex.change(ex.str,ex.ch); ——> ex.change(“good”,ex.ch});
System.out.print(ex.str+" and "); —— >System.out.print("good"+" and "); ——>System.out.print("good and");
而Sytem.out.print(ex.ch); 这行,由于上面执行了ex.change(“good”,ex.ch);因此将ex.ch这个数组地址传递给进来来,然后change这个过程中将ex.ch[0]改成了'g',因此,ex.ch={'g','b','c'}
因此Sytem.out.print(ex.ch)——>Sytem.out.print({'g','b','c'});
展开全部
string 是final的,你可理解是值传递,但char[] 数组是引用传递,当然会修改
追问
好像有点懂了,你在讲一下传递的知识,在讲详细点分就给你啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、常量str 与 ch 分别使用创建实例方式和数组方式声明字符串。
两者区别:创建实例的方式声明字符串,会在内存中新建一个实例进行赋值。数组或者直接赋值字符串,则会修改内存中原有的对象。
如下伪代码所示:
string a=“abc” , b=“abc” ;
在比较字符串 a、 b 时,a 等于 b 。
而 string a=new string(“abc”);
string b=new string(“abc”) ;
再比较字符串 a 和 b, 则 a 不等于 b 。
2、再是change 方法没有返回值,是void修饰。所以对 ch 的修改影响到了全局变量 ch,对str 的修改仅仅是修改了chenge方法中创建的 str 同名的局部变量。
最后 输出 为 答案 B项。
两者区别:创建实例的方式声明字符串,会在内存中新建一个实例进行赋值。数组或者直接赋值字符串,则会修改内存中原有的对象。
如下伪代码所示:
string a=“abc” , b=“abc” ;
在比较字符串 a、 b 时,a 等于 b 。
而 string a=new string(“abc”);
string b=new string(“abc”) ;
再比较字符串 a 和 b, 则 a 不等于 b 。
2、再是change 方法没有返回值,是void修饰。所以对 ch 的修改影响到了全局变量 ch,对str 的修改仅仅是修改了chenge方法中创建的 str 同名的局部变量。
最后 输出 为 答案 B项。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询