A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-张洋 中级黑马   /  2013-2-26 15:18  /  1743 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码
输入结果是未改变

为什么没有改变啊

8 个回复

倒序浏览
你简直逆天了...这个问题好像问了两遍....
public static void changestr(String str) {
                str = "改变了";
        }
因为你这里面改变的是形参str的值.
回复 使用道具 举报
这是变量的的作用域的问题,
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
不带这么玩的,问题重复,但是技术分可不会重复的

我哪个问题和这个问题重复了?
回复 使用道具 举报
changestr(String str)中{}中的str变了,但是没有()中的str没变
回复 使用道具 举报
陈圳 发表于 2013-2-26 15:27
你简直逆天了...这个问题好像问了两遍....
public static void changestr(String str) {
                s ...

我想起来

我想起来了形参和实参的故事,
但是我想不起来我问过这类似的问题。
没办法。发现黑马发现的晚。
回复 使用道具 举报
陈圳 高级黑马 2013-2-26 15:55:56
8#
黑马-张洋 发表于 2013-2-26 15:40
我想起来

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

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

说实话,我问的问题真心是我没搞懂的。至少是没学深刻的。
其实就这道题的问题,我学的c的书里面的前10页就讲了这个问题,主要是没怎么用,真心忘了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马