黑马程序员技术交流社区

标题: 今天深思了老半天,终于想通了一些细节,想出了一个题,顺便拿出来考考大家。 [打印本页]

作者: 付玉光    时间: 2013-2-28 23:00
标题: 今天深思了老半天,终于想通了一些细节,想出了一个题,顺便拿出来考考大家。


class Demo{
        public static void main(String args[]){
                String str1 = " I Love You";
                fun(str1);
                System.out.println(str1);
        }
        public static void fun(String str1){
                str1 = "You Love Me";
        }
}

//Demo类中主函数执行完后

//①打印的结果是什么?

//②请分析并写出具体的程序执行流程

//③画出相应的必要图解。

作者: 许鑫星    时间: 2013-2-28 23:06
当然是输出 I Love You  整个程序流程都没有改变过str1的值,至于调用函数的时候,str1是一个形参,由于没有返回值,并不会对主函数的str1值产生影响
作者: 张世钦    时间: 2013-2-28 23:34
class Demo{
        public static void main(String args[]){
                String str1 = " I Love You";//在主函数中定义一个String对象str1,值是 I Love You
                fun(str1);//将str1作为参数传递给fun()函数
                System.out.println(str1);//打印str1对象(自始至终str1的值是没有变化的)
        }
        public static void fun(String str1){
                str1 = "You Love Me";//将传入的str1对象指向一个新的字符串You Love Me
        }
}
程序流程是这样的:
    String str1 = " I Love You";//在主函数中定义一个String对象str1,值是  I Love You
  fun(str1);//将str1作为参数传递给fun()函数
      str1 = "You Love Me";//函数中定义一个String对象str1,指向传入的String对象,然后改变指向一个新的字符串 You Love Me
  System.out.println(str1);//打印str1对象(自始至终str1的值是没有变化的)

111.png (15.91 KB, 下载次数: 11)

111.png

作者: 付玉光    时间: 2013-3-1 00:34
OK, 如果是高手!{:soso_e129:}




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