• (原)String、StringBuilder、StringBuffer作为形参


    今天在刷一道算法题时,突然遇到StringBuilder作为形参和String作为形参时,最终得出来的结果不同。故尝试了几个demo看看它们之间的区别。

    当String类型作为参数时,

     1 public class Test
     2 {
     3     public static void main(String[] args)
     4     {
     5         String sb=new String();
     6         Test.TestString(sb);
     7         System.out.println("实参为:    "+sb.toString());
     8         
     9     }
    10     
    11     public static void TestString(String s)
    12     {
    13         s="5";
    14         System.out.println("形参为:    "+s);
    15     }
    16 }

    输出结果为:

    即说明形参的改变并不影响实参的改变,本质上是值的传递。

    当StringBuilder类型作为参数时,

     1 public class Test
     2 {
     3     public static void main(String[] args)
     4     {
     5         StringBuilder sb=new StringBuilder();
     6         Test.TestString(sb);
     7         System.out.println("实参为:    "+sb.toString());
     8         
     9     }
    10     
    11     public static void TestString(StringBuilder s)
    12     {
    13         s.append("5");
    14         System.out.println("形参为:    "+s);
    15     }
    16 }

    说明形参的改变会影响实参的改变,即引用的传递

     1 public class Test
     2 {
     3     public static void main(String[] args)
     4     {
     5         StringBuffer sb=new StringBuffer();
     6         Test.TestString(sb);
     7         System.out.println("实参为:    "+sb.toString());
     8         
     9     }
    10     
    11     public static void TestString(StringBuffer s)
    12     {
    13         s.append("5");
    14         System.out.println("形参为:    "+s);
    15     }
    16 }

    说明形参的改变会影响实参的改变,即引用的传递

    其区别在于:String类不可变

    而StringBuilder与StringBuffer可变

    默认创建了一个长度为16的数组。

    故在String作为形参时,由于String的不可变性,在作形参时形参和实参分别指向了不同的字符串,由于StringBuilder的可变性,形参还是在实参的基础上继续添加新的字符串。

  • 相关阅读:
    python文件、文件夹操作OS模块
    python字符串
    python集合set
    多市场交易碎片交易
    基金公司主要系统
    高频交易:Solarflare组建超低延迟网络
    上交所技术前沿
    高频交易低延迟:信鸽、100微妙和恒生的纳秒试验
    解密PB
    解密HOMS
  • 原文地址:https://www.cnblogs.com/xh0102/p/5803530.html
Copyright © 2020-2023  润新知