初入java求解(需过程)

2019-01-02 20:00发布

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

标签:
4条回答
裙下三千臣
2楼-- · 2019-01-02 20:42
初与友歌
3楼-- · 2019-01-02 20:44

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

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“

查看更多
心情的温度
4楼-- · 2019-01-02 20:54

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

查看更多
不流泪的眼
5楼-- · 2019-01-02 20:58

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你就看他想要结果是什么,让后往上推即可!这是倒退法,希望能帮到你,因为楼上已经解释的很详细了,所以没必要啰嗦了

查看更多
登录 后发表回答