Topic: 字符串与字符串数组的经典问题!!!

  Print this page

1.字符串与字符串数组的经典问题!!! Copy to clipboard
Posted by: chenxiang0207
Posted on: 2005-04-17 13:19

public class StringArray{
  private static void add(String str1, String str2){
    str1 = str1 + str2;
    System.out.println("运算结果:"+str1);
  }
  private static void add(String[] sts1, String str2) {
    sts1[0] = sts1[0] + str2;
    System.out.println("运算结果:"+sts1[0]);
  }

  public static void main(String[] args) {
    String sa = "a", sb = "b";
    String[] sts = new String[1];
    sts[0] = "a";
    System.out.println("原来的Sa:"+sa);
    add(sa, sb);
    System.out.println("进行add运算后的Sa:"+sa);
    System.out.println("原来的sts[0]:"+sts[0]);
    add(sts, sb);
    System.out.println("进行add运算后的sts[0]:"+sts[0]);
  }
}

第一个ADD的运算结果是ab,可是在main函数里打印出"进行add运算后的Sa:"却是a,可是第二个ADD的运算结果跟main函数里打印出"进行add运算后的sts[0]:"都是ab,请问这是为什么?哪位兄弟帮我解决一下,谢谢啦!!

2.Re:字符串与字符串数组的经典问题!!! [Re: chenxiang0207] Copy to clipboard
Posted by: chenxiang0207
Posted on: 2005-04-17 14:08

怎么没有一个人进来帮我解答一下呀?
找了很多资料就是不知道为什么呢?
哪位大侠快来给我弄一下!

3.Re:字符串与字符串数组的经典问题!!! [Re: chenxiang0207] Copy to clipboard
Posted by: why
Posted on: 2005-04-17 14:26

I don't know what those 很多资料 you have read (hopefully it's not just found) are, but this is a basic concept to know about Java:
pass by value

The add method has no side-effect to sa, but sts[0] would get a new value.

4.Re:字符串与字符串数组的经典问题!!! [Re: chenxiang0207] Copy to clipboard
Posted by: chenxiang0207
Posted on: 2005-04-17 17:29

那结果我是经过调试的,怎么会错了?
Sa没有变,但sts1[0]的确变了
就是不知道WHY?
哪位高手一定要帮帮我看看!!!

5.Re:字符串与字符串数组的经典问题!!! [Re: chenxiang0207] Copy to clipboard
Posted by: VirusCamp
Posted on: 2005-04-17 20:44

这是因为java是传值,而不是传引用的.

传进method的参数的值不会被改变.

sa-->"a"在method里不会被改变

sts-->[]其中[0]-->"a",改变的不是sts,而是sts[0],sts是不会被改变的.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923