Java中String引用类型讨论

2 篇文章 0 订阅

Java中String引用类型讨论

问题提出

在Java语言中,String类型在作为函数传参时,String类型是表现出“非对象”特性的。举例如下:

public class Test {
    public static void main(String args[]) {
        System.out.println("hello,world!");
        Test testCls = new Test();
        testCls.test0();
    }

    public void test0(){
        String name = "louis";
        addLastName(name);
        System.out.println(name);
    }

    public void addLastName(String name){
        name += "lan";
        System.out.println(name);
    }
}

最终的结果如下:

hello,world!
louislan
louis

问题解释

这是因为在Java中,我们将String类型认定为常量(具体可看Java api文档)。当他们被创建后是不可以改变的,所以当String类型进行改变操作时,会另外实例化一个String(相当于new String)。

问题解决

Java中提供了另一个类型,叫作StringBuffer类型,他能达到我们想要的结果。如下例:

public class Test {
    public static void main(String args[]) {
        System.out.println("hello,world!");
        Test testCls = new Test();
        testCls.test0();
    }

    public void test0(){
        StringBuffer name = new StringBuffer("louis");
        addLastName(name);
        System.out.println(name);
    }

    public void addLastName(StringBuffer name){
        name.append(" lan") ;
        System.out.println(name);
    }
}

最终输出结果为:

hello,world!
louis lan
louis lan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值