黑马程序员技术交流社区

标题: 静态方法的调用问题 [打印本页]

作者: 黑马-张洋    时间: 2013-2-26 15:18
标题: 静态方法的调用问题
  1. public class test {
  2.         public static void changestr(String str) {
  3.                 str = "改变了";
  4.         }

  5.         public static void main(String[] args) {
  6.                 String str = "未改变";
  7.                 changestr(str);
  8.                 System.out.println(str);
  9.         }
  10. }
复制代码
输入结果是未改变

为什么没有改变啊
作者: 陈圳    时间: 2013-2-26 15:27
你简直逆天了...这个问题好像问了两遍....
public static void changestr(String str) {
                str = "改变了";
        }
因为你这里面改变的是形参str的值.

作者: 李挺    时间: 2013-2-26 15:34
这是变量的的作用域的问题,
str = "改变了";
只是对这个函数的局部变量str进行复制,并未改变主函数的参数
  1. public class Test2 {
  2.     public static String changestr(String str) {
  3.             return str = "改变了";
  4.     }

  5.     public static void main(String[] args) {
  6.             String str = "未改变";
  7.             str=changestr(str);
  8.             System.out.println(str);
  9.     }
  10. }
复制代码
这样就OK了
作者: 黑马刘杰    时间: 2013-2-26 15:36
不带这么玩的,问题重复,但是技术分可不会重复的
作者: 黑马-张洋    时间: 2013-2-26 15:38
黑马刘杰 发表于 2013-2-26 15:36
不带这么玩的,问题重复,但是技术分可不会重复的

我哪个问题和这个问题重复了?
作者: Benwolf0818    时间: 2013-2-26 15:39
changestr(String str)中{}中的str变了,但是没有()中的str没变
作者: 黑马-张洋    时间: 2013-2-26 15:40
陈圳 发表于 2013-2-26 15:27
你简直逆天了...这个问题好像问了两遍....
public static void changestr(String str) {
                s ...

我想起来

我想起来了形参和实参的故事,
但是我想不起来我问过这类似的问题。
没办法。发现黑马发现的晚。
作者: 陈圳    时间: 2013-2-26 15:55
黑马-张洋 发表于 2013-2-26 15:40
我想起来

我想起来了形参和实参的故事,

一样的呀,主要是感觉你这种学习的方式有点问题,我们发帖取技术分,都是有点怪握的.即使没版主没审核,我们也可以站内信呼他再看一下能不能获得,可你一下子提的问题太多.而且很多版主都在获得技术分的帖子里强调过了.这类帖,5>的人,不给...技术分.
   况且把过多时间都花求别人解答,不如自己提一些提供一些算法大家一起交流,或者总结的一些其他经验.这样有利于提升自己.
作者: 黑马-张洋    时间: 2013-2-26 16:19
陈圳 发表于 2013-2-26 15:55
一样的呀,主要是感觉你这种学习的方式有点问题,我们发帖取技术分,都是有点怪握的.即使没版主没审核,我们 ...

说实话,我问的问题真心是我没搞懂的。至少是没学深刻的。
其实就这道题的问题,我学的c的书里面的前10页就讲了这个问题,主要是没怎么用,真心忘了。




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