String字符串练习题

String字符串练习题

1、下面代码的运行结果为

public class A {
    public String str = new String("hello");
    public char[] ch = {'t','e','s','t'};

    public void change(String str, char ch[]){
        str = "hello world";
        ch[0] = 'b';
        
    }
    public static void main(String[] args) {

        A st = new A();
        st.change(st.str, st.ch);
        System.out.println(st.str);
        System.out.println(st.ch);
    }
}

在这里插入图片描述
通过传参局部变量ch获取了st.ch的地址,更改了字符数组中ch[0]的值,str虽然也获取了st.str的地址,但是由于字符串的不可变性(不改变原字符串,在新的地址生成新的字符串),使得字符串常量池中新生成的hello world与原hello字符串的地址不同,并把新的地址传递给局部变量str,当结束调用change方法,局部变量被销毁,st.ch和st.str仍然是原来的地址,st.ch的值被改变,而st.str由于字符串的不变性没有被改变,所以最终得到hello和best
答案:
hello
best

2.下面代码的运行结果为

public class B {
    public static void main(String[] args) {
        String s1 = "Hello";
        String s2 = "World";

        String s3 = "HelloWorld";
        String s4 = "Hello" + "World";
        String s5 = s1 + "World";
        String s6 = "Hello" + s2;
        String s7 = s1 + s2;


        System.out.println(s3 == s4);
        System.out.println(s3 == s5);
        System.out.println(s3 == s6);
        System.out.println(s3 == s7);
        System.out.println(s5 == s6);
        System.out.println(s5 == s7);


        String s8 = s1+s2;
        System.out.println(s7==s8);
    }
}

答案:
true
false
false
false
false
false
false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值