鱼C论坛

 找回密码
 立即注册
查看: 3110|回复: 9

[已解决]求大神帮忙解决代码错误

[复制链接]
发表于 2019-9-28 20:04:06 | 显示全部楼层 |阅读模式
50鱼币
  1. public class Test5 {
  2.         public static void main(String[] args) {
  3.                 String[] arrayOfString = {"fkhsdf", "hdfsdf"};
  4.                 String str = null;
  5.                 String str1;
  6.                 firstString(arrayOfString, str);
  7.                 System.out.println(str);
  8.                 firstString(arrayOfString, str2);
  9.         }
  10.         public static void firstString(String[] arrayOfString, String str) {
  11.                 str = arrayOfString[0];
  12.                 System.out.println(arrayOfString[0]);
  13.                 System.out.println(str);
  14.         }
  15. }
复制代码

求助大神帮忙
最佳答案
2019-9-28 20:04:07
可以这样:
  1. public class Test5 {
  2.        
  3.     public static void main(String[] args) {
  4.             String[] arrayOfString = {"fkhsdf", "hdfsdf"};
  5.             StringBuffer str=new StringBuffer();
  6.             //String str1;
  7.             firstString(arrayOfString, str);
  8.             System.out.println(str);
  9.             //firstString(arrayOfString, str);
  10.     }
  11.     public static void firstString(String[] arrayOfString, StringBuffer str) {
  12.             str.append(arrayOfString[0]);
  13.             System.out.println(arrayOfString[0]);
  14.             System.out.println(str);
  15.     }
  16. }
复制代码

最佳答案

查看完整内容

可以这样:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-28 20:04:07 | 显示全部楼层    本楼为最佳答案   
可以这样:
  1. public class Test5 {
  2.        
  3.     public static void main(String[] args) {
  4.             String[] arrayOfString = {"fkhsdf", "hdfsdf"};
  5.             StringBuffer str=new StringBuffer();
  6.             //String str1;
  7.             firstString(arrayOfString, str);
  8.             System.out.println(str);
  9.             //firstString(arrayOfString, str);
  10.     }
  11.     public static void firstString(String[] arrayOfString, StringBuffer str) {
  12.             str.append(arrayOfString[0]);
  13.             System.out.println(arrayOfString[0]);
  14.             System.out.println(str);
  15.     }
  16. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[0];
                System.out.println(arrayOfString[0]);
                System.out.println(str);
        }
}
刚学不知道对不对。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-28 21:06:06 | 显示全部楼层
Restia 发表于 2019-9-28 20:52
package DBUG;

public class Test5 {

大神,我知道初始化不报错,但在main中str和str1的值没变化,我想了解的是这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-29 16:28:58 | 显示全部楼层

大佬,能解释一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-29 17:28:47 | 显示全部楼层
本帖最后由 superbe 于 2019-9-29 17:30 编辑

String str="字符串" 会给 str 分配一个新的地址,这样在函数里就没有修改实参的内容。StringBuffrer 的append方法是在字符串str后面追加内容,地址没变,所以等于main的str也修改了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

大神真厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

大神如果不是字符串类型而是数值类型比如说整形,那该咋办呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-6 21:52:59 | 显示全部楼层
java没有c/c++的指针,基本类型也没有c/c++传参时用&表示按引用传递,不能方便的在函数交换两个int实参的值。
网上的方法,比如使用数组,使用包装类,使用反射机制等,具体你可以百度下,但是我觉得这些方法都不能算真正的交换,要像c/c++那样是没有办法的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-10-8 03:09:08 From FishC Mobile | 显示全部楼层
superbe 发表于 2019-10-6 21:52
java没有c/c++的指针,基本类型也没有c/c++传参时用&表示按引用传递,不能方便的在函数交换两个int实参的值 ...

大神,非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 02:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表