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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 alwayszhao 于 2016-2-18 23:18 编辑
  1. public static void main(String []args){
  2. String s= "abc";
  3. change(s);
  4. System.out.println(s);
  5. }

  6. public static void change(){
  7. //??
  8. }

  9. 方法内容写在//后
复制代码



9 个回复

倒序浏览
只能把修改后的String return回去了
回复 使用道具 举报
黑白涩 来自手机 中级黑马 2016-2-19 07:48:29
藤椅
关键你也没写要改成什么样的,还有返回String类型的话,你change函数的返回参数也得改
回复 使用道具 举报
  1. public class Test {
  2.         public static void main(String []args){
  3.                 String s= "abc";
  4.                 String ss = change(s);
  5.                 System.out.println(ss);
  6.                 }

  7.         private static String change(String s) {
  8.                 s="ABC";
  9.                 return s;
  10.                
  11.                
  12.         }
复制代码

评分

参与人数 1黑马币 +2 收起 理由
洋葱头头 + 2 很给力!

查看全部评分

回复 使用道具 举报
本帖最后由 yindalei00 于 2016-2-19 10:55 编辑

  • String s= "abc";
  • change(s);
  • System.out.println(s);

change()方法完全无意义,调用完方法又被回收     s字符串不曾改变比如
  1. public class Test {

  2.         public static void main(String[] args) {
  3.                 String s = "abc";
  4.                 change(s);
  5.                 System.out.println(s);
  6.         }
  7.         private static void change(String sss) {
  8.                 sss = "1111";
  9.         }
  10. }
复制代码
输出 abc
回复 使用道具 举报
yuchifeifan 来自手机 中级黑马 2016-2-19 11:28:00
地板
你不对s赋值说明s的引用是不会在变了现在只能改变s指向的对象的内容了,string中默认有一个存放字符的数组他里面放的就是String代表的内容你这时就要拿到这个数组并给他赋值就可以改变s了 说白了就是反射 唯一有点疑惑的是string里的数组是final修饰的为啥还能被改变?
回复 使用道具 举报
谢谢大家
回复 使用道具 举报
change方法返回值是String  然后给S赋值,,return回去
回复 使用道具 举报
huang_bing_hua 来自手机 中级黑马 2016-2-22 09:34:23
9#
alwayszhao 发表于 2016-2-18 23:16

首先返回值类型是String,而不是空,第二:有返回值的方法调用,单独调用会报错,建议先赋值调用再输出。
回复 使用道具 举报
.cC 初级黑马 2019-5-18 15:14:57
10#
public class $_04_Notice {
    public static void main(String[] args) {
        String s1 = "hello";
        $_04_Notice notice = new $_04_Notice();
//        notice.test(s1);
//        System.out.println("s1 = " + s1); // s1 = hello

        s1 = notice.test(s1);
        System.out.println("s1 = " + s1);
    }
    public String test(String s1) {
        s1 = "hi~~";
        return s1;
    }
    /*public void test(String s1) {
        s1 = "hi~~";
    }*/
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
为什么change没有改变值,可以理解为:
常量池里面的值不变的,
change方法里面的局部变量指向了一个新的常量。
change方法调用结束后,
main方法里面的局部变量还是指向常量池里面常量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马