Java中的String基础的小问题

String类型变量赋初值后,调用一个方法, 该方法对参数赋值,如下:

class  StringTest{
	
    public static void main(String[] args) {
        String s="abc";
        System.out.println(s);
        test(s);
        System.out.println(s);
    }

    public static void test(String a){
        a="def";
    }
}

结果为:

调用了test方法后s变量的值并未变,这是因为调用test方法用了值传递,即将变量s的副本传递给形参a,而变量s的值不会变。

同样,如果变量s是通过 String s = new String("abc")  实例化再调用test方法也一样。

 

String a="abc";
String b="ab"+"c";
System.out.println(a==b);

String c = "a";
String d = "bc";
String e = c+d;
System.out.println(a==e);

结果为 :

true

false

因为String b = "ab" + "c" 编译时会立即自动将“ab"与"c"连接,故在内存中变量a和b会指向相同的地址,因此a==b;

而在String e = c + d 编译时,c和d均为变量,内存指向未知,两者不能立即直接连接,因此变量a和e在内存的指向不一样,因此a != e。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值