坦然自若 发表于 2019-9-28 20:04:06

求大神帮忙解决代码错误

public class Test5 {
        public static void main(String[] args) {
                String[] arrayOfString = {"fkhsdf", "hdfsdf"};
                String str = null;
                String str1;
                firstString(arrayOfString, str);
                System.out.println(str);
                firstString(arrayOfString, str2);
        }
        public static void firstString(String[] arrayOfString, String str) {
                str = arrayOfString;
                System.out.println(arrayOfString);
                System.out.println(str);
        }
}

求助大神帮忙

superbe 发表于 2019-9-28 20:04:07

可以这样:
public class Test5 {
       
    public static void main(String[] args) {
            String[] arrayOfString = {"fkhsdf", "hdfsdf"};
            StringBuffer str=new StringBuffer();
            //String str1;
            firstString(arrayOfString, str);
            System.out.println(str);
            //firstString(arrayOfString, str);
    }
    public static void firstString(String[] arrayOfString, StringBuffer str) {
            str.append(arrayOfString);
            System.out.println(arrayOfString);
            System.out.println(str);
    }
}

Restia 发表于 2019-9-28 20:52:48

package DBUG;

public class Test5 {
      public static void main(String[] args) {
                String[] arrayOfString = {"fkhsdf", "hdfsdf"};
                String str = null;
                String str1 = null;
                firstString(arrayOfString, str);
                System.out.println(str);
                firstString(arrayOfString, str1);
      }
      public static void firstString(String[] arrayOfString, String str) {
                str = arrayOfString;
                System.out.println(arrayOfString);
                System.out.println(str);
      }
}
刚学不知道对不对。{:10_256:}

坦然自若 发表于 2019-9-28 21:06:06

Restia 发表于 2019-9-28 20:52
package DBUG;

public class Test5 {


大神,我知道初始化不报错,但在main中str和str1的值没变化,我想了解的是这个{:5_109:}

坦然自若 发表于 2019-9-29 16:28:58

superbe 发表于 2019-9-29 12:30
可以这样:

大佬,能解释一下吗

superbe 发表于 2019-9-29 17:28:47

本帖最后由 superbe 于 2019-9-29 17:30 编辑

String str="字符串" 会给 str 分配一个新的地址,这样在函数里就没有修改实参的内容。StringBuffrer 的append方法是在字符串str后面追加内容,地址没变,所以等于main的str也修改了。

坦然自若 发表于 2019-9-30 07:29:06

superbe 发表于 2019-9-29 17:28
String str="字符串" 会给 str 分配一个新的地址,这样在函数里就没有修改实参的内容。StringBuffrer 的app ...

大神真厉害{:5_108:}

坦然自若 发表于 2019-9-30 07:41:25

superbe 发表于 2019-9-29 17:28
String str="字符串" 会给 str 分配一个新的地址,这样在函数里就没有修改实参的内容。StringBuffrer 的app ...

大神如果不是字符串类型而是数值类型比如说整形,那该咋办呢{:5_109:}

superbe 发表于 2019-10-6 21:52:59

java没有c/c++的指针,基本类型也没有c/c++传参时用&表示按引用传递,不能方便的在函数交换两个int实参的值。
网上的方法,比如使用数组,使用包装类,使用反射机制等,具体你可以百度下,但是我觉得这些方法都不能算真正的交换,要像c/c++那样是没有办法的。

坦然自若 发表于 2019-10-8 03:09:08

superbe 发表于 2019-10-6 21:52
java没有c/c++的指针,基本类型也没有c/c++传参时用&表示按引用传递,不能方便的在函数交换两个int实参的值 ...

大神,非常感谢
页: [1]
查看完整版本: 求大神帮忙解决代码错误