黑马程序员技术交流社区

标题: 有关String的问题 [打印本页]

作者: .Mr    时间: 2013-12-6 23:37
标题: 有关String的问题
本帖最后由 .Mr 于 2013-12-7 16:38 编辑

public class Ex{
        public static void main(String args[]){
        String s="abc";
        s="gav"
        System.out.println(s);
        }
} 这个打印出来是 gav
和下面代码打印相比的话,下面是调用函数的地方出了问题吗?请帮我解答一下,谢谢
以下代码打印出来是:good and gbc
public class Example{
        String str = new String("good");
        char[] ch = {'a','b','c'};
        public static void main(String args[]){
        Example ex = new Example();
        ex.change(ex.str,ex.ch);
        System.out.println(ex.str+"and");
        System.out.println(ex.ch);
        }
        public void change(String str,char ch[]){
        str = "test ok";
        ch[0]="g";
        }
}
作者: 四五六七八    时间: 2013-12-7 00:41
public void change(String str,char ch[]){}
在调用change()时相当于把str对象复制了一份 (和main()中的str不在有任何关系)  ch[]紧紧是把地址传递过去   直接通过操作地址来修改数据
作者: 影凡    时间: 2013-12-7 01:22
在主函数中运行ex.str,str这个对象存储的是最开始赋予的good,在change函数中并没有改变其存储的内容,或者说你在change中所用改变str在堆内存中内容的那种赋值方法是不对的,光从语法上看是没有任何问题的语句,所以编译时不会报错,得到的结果只能是good;而ch[0]='g';,确实是用g取代了原来位置上的a~
作者: .Mr    时间: 2013-12-7 16:38
四五六七八 发表于 2013-12-7 00:41
public void change(String str,char ch[]){}
在调用change()时相当于把str对象复制了一份 (和main()中 ...

谢谢啦  懂了。。。
作者: .Mr    时间: 2013-12-7 16:38
影凡 发表于 2013-12-7 01:22
在主函数中运行ex.str,str这个对象存储的是最开始赋予的good,在change函数中并没有改变其存储的内容,或者 ...

谢谢啦  懂了。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2