zoukankan      html  css  js  c++  java
  • (原)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的可变性,形参还是在实参的基础上继续添加新的字符串。

  • 相关阅读:
    利用iframe实现ajax 跨域通信的解决方案
    C++中事件机制的简洁实现
    java远程类加载与轻客户端
    iOS开发那些事性能优化–内存泄露问题的解决
    Asp.net项目的开发流程
    LVS配置教程
    PowerShell之东扯西谈
    响应式设计专题
    2013年最值得关注的网页设计流行趋势
    HTTP Live Streaming直播技术分析与实现
  • 原文地址:https://www.cnblogs.com/xh0102/p/5803530.html
Copyright © 2011-2022 走看看