zoukankan      html  css  js  c++  java
  • 昨天的笔试题, StringBuffer

    代码:

     1     public static void switchStr(StringBuffer x, StringBuffer y) {
     2         x.append(y);
     3         System.out.println("(1)" + x);
     4         y = x;
     5         System.out.println("(2)" + y);
     6     }
     7 
     8     public static void main(String args[]) {
     9         StringBuffer a = new StringBuffer("A");
    10         StringBuffer b = new StringBuffer("B");
    11         switchStr(a, b);
    12         System.out.println("(3)" + a + "," + b);
    13     }

    执行结果

    (1)AB
    (2)AB
    (3)AB,B

     
     
    -----------------------------------------------------------------------分割线-----------------------------------------------------------------------
     
    修改一下
     1     public static void switchStr(StringBuffer x, StringBuffer y) {
     2         x = y;
     3         System.out.println("(1) x = " + x);
     4         y = x;
     5         System.out.println("(2) y = " + y);
     6     }
     7 
     8     public static void main(String args[]) {
     9         StringBuffer a = new StringBuffer("A");
    10         StringBuffer b = new StringBuffer("B");
    11         switchStr(a, b);
    12         System.out.println("(3) a = " + a);
    13         System.out.println("(4) b = " + b);
    14     }

    执行结果

    (1) x = B
    (2) y = B
    (3) a = A
    (4) b = B

    a 指向 “A”

    b 指向 “B”

    x = y ,这时候 x 和 y 同时指向 “B”了

    y = x ,这句其实没起作用

    最终 b x y 同时指向 “B”

    a 没变

    -----------------------------------------------------------------------分割线-----------------------------------------------------------------------

    真的想交换 a b 的话:

     1     public static void switchStr(StringBuffer x, StringBuffer y) {
     2         StringBuffer temp = x;
     3         x = y;
     4         System.out.println("(1) x = " + x);
     5         y = temp;
     6         System.out.println("(2) y = " + y);
     7     }
     8 
     9     public static void main(String args[]) {
    10         StringBuffer a = new StringBuffer("A");
    11         StringBuffer b = new StringBuffer("B");
    12         switchStr(a, b);
    13         System.out.println("(3) a = " + a);
    14         System.out.println("(4) b = " + b);
    15     }

    结果:

    (1) x = B
    (2) y = A
    (3) a = A
    (4) b = B

  • 相关阅读:
    Java在ACM中的应用
    acm->stl
    残缺棋盘--状压DP
    EOJ Monthly 2019.3 A
    【CF1141E】Superhero Battle
    AtCoder Grant Contest 10.F 博弈
    莫比乌斯反演总结
    P2257 YY的GCD
    BZOJ1011 莫比乌斯反演(基础题
    HDU1695 莫比乌斯反演
  • 原文地址:https://www.cnblogs.com/maxiaodoubao/p/4723560.html
Copyright © 2011-2022 走看看