首页 新闻 会员 周边

初入java求解(需过程)

0
悬赏园豆:10 [已解决问题] 解决于 2018-12-18 15:31

9.请看下面的代码
public class Test{
String str=new String("Girl");
char ch[]={'d','b','c'};
public static void main(String[]args){
Test x=new Test();
x.change(x.str,x.ch);
System.out.println(x.str+"and"+ x.ch[0]+x.ch[1]+x.ch[2]);
}
public void change(String str,char ch[]){
str="Boy";
ch[0]='a';
}
}
该程序的输出结果是( )。
A.Boy and dbc B.Boy and abc
C.Girl and dbc D.Girl and abc

PoGeo的主页 PoGeo | 初学一级 | 园豆:89
提问于:2018-12-07 07:49
< >
分享
最佳答案
1

帮你格式化一下,你们都不知道这个编辑器可以格式化代码?

public class Test{
    
    String str=new String("Girl");
    char ch[]={'d','b','c'};

    public static void main(String[]args){
        Test x=new Test();
        x.change(x.str,x.ch);
        System.out.println(x.str+"and"+ x.ch[0]+x.ch[1]+x.ch[2]);
    }

    public void change(String str,char ch[]){
        str="Boy";
        ch[0]='a';
    }
}

我觉得是D。str是一个引用型变量,指向“Gril”,ch也是引用型变量,指向“dbc”,调用change方法,相当于新建了两个应用型变量传递给了change方法,第一个变量重新指向了“Boy”,不影响外面的那个应用变量的指向。第二个变量指向的字符串第一个字符改变了,ch也同时指向这个字符串,所以是“abc“

收获园豆:10
会长 | 专家六级 |园豆:12401 | 2018-12-07 09:03

谢谢

PoGeo | 园豆:89 (初学一级) | 2018-12-10 00:53

为啥ch[0]要变化

PoGeo | 园豆:89 (初学一级) | 2018-12-10 00:57
其他回答(3)
1

D,x.change(x.str,x.ch); 中 str="Boy"; 因为String 的特殊性,每一个不同的String 值都有一个自己的地址值,相当于
str=new String("Boy"); ,你没有接受返回值,主方法中str 引用不变,还是原来的Girl,
而 传入的char ch[] 为传入一个引用,值改变,引用对应数组值也改变

JSBK | 园豆:179 (初学一级) | 2018-12-07 09:33

为啥ch[0]要变化

支持(0) 反对(0) PoGeo | 园豆:89 (初学一级) | 2018-12-10 00:57

支持(0) 反对(0) JSBK | 园豆:179 (初学一级) | 2018-12-10 09:21

@PoGeo: 上面回答的图完美阐释了数组变化,当然String 类型上面阐释不清楚,在传入一个数组中,内存中没有进行新的创建数组空间,如果数组相当于一个房间,那么变量相当于门的钥匙,传入数值,相当于复制一份钥匙,一个人拿着钥匙去改变这个房间的布局,另一个人拿着这个房间另一把钥匙去开这个房间,这个房间的布局当然会发生变化

支持(0) 反对(0) JSBK | 园豆:179 (初学一级) | 2018-12-10 09:27
0
ycyzharry | 园豆:25651 (高人七级) | 2018-12-07 10:19
0

public class Test{ String str=new String("Girl"); char ch[]={'d','b','c'}; public static void main(String[]args){ Test x=new Test(); x.change(x.str,x.ch); System.out.println(x.str+"and"+ x.ch[0]+x.ch[1]+x.ch[2]); } public void change(String str,char ch[]){ str="Boy"; ch[0]='a'; } } 该程序的输出结果是( )。 A.Boy and dbc B.Boy and abc C.Girl and dbc D.Girl and abc答案是D你就看他想要结果是什么,让后往上推即可!这是倒退法,希望能帮到你,因为楼上已经解释的很详细了,所以没必要啰嗦了

峰芳 | 园豆:208 (菜鸟二级) | 2018-12-09 10:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册