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的可变性,形参还是在实参的基础上继续添加新的字符串。

  • 相关阅读:
    Docker宿主机登陆Container方法
    Get Docker for CentOS and Installing Docker
    CentOS7网络配置
    国内npm镜像源推荐及使用
    CentOS6.5源码安装python3.5.2
    阿里云SLB后Nginx、Tomcat获取真实IP
    MacOS清除管理员密码
    SVN-修改已提交的日志
    爬虫的初始和requests模块基础用法
    利用面向对象写的登录与注册
  • 原文地址:https://www.cnblogs.com/xh0102/p/5803530.html
Copyright © 2011-2022 走看看