黑马程序员技术交流社区
标题:
如何定义一个change方法改变主方法中string s的值
[打印本页]
作者:
alwayszhao
时间:
2016-2-18 23:16
标题:
如何定义一个change方法改变主方法中string s的值
本帖最后由 alwayszhao 于 2016-2-18 23:18 编辑
public static void main(String []args){
String s= "abc";
change(s);
System.out.println(s);
}
public static void change(){
//??
}
方法内容写在//后
复制代码
作者:
cjwhale
时间:
2016-2-18 23:18
只能把修改后的String return回去了
作者:
黑白涩
时间:
2016-2-19 07:48
关键你也没写要改成什么样的,还有返回String类型的话,你change函数的返回参数也得改
作者:
heimagirls
时间:
2016-2-19 10:31
public class Test {
public static void main(String []args){
String s= "abc";
String ss = change(s);
System.out.println(ss);
}
private static String change(String s) {
s="ABC";
return s;
}
复制代码
作者:
yindalei00
时间:
2016-2-19 10:48
本帖最后由 yindalei00 于 2016-2-19 10:55 编辑
String s= "abc";
change(s);
System.out.println(s);
change()方法完全无意义,调用完方法又被回收 s字符串不曾改变比如
public class Test {
public static void main(String[] args) {
String s = "abc";
change(s);
System.out.println(s);
}
private static void change(String sss) {
sss = "1111";
}
}
复制代码
输出 abc
作者:
yuchifeifan
时间:
2016-2-19 11:28
你不对s赋值说明s的引用是不会在变了现在只能改变s指向的对象的内容了,string中默认有一个存放字符的数组他里面放的就是String代表的内容你这时就要拿到这个数组并给他赋值就可以改变s了 说白了就是反射 唯一有点疑惑的是string里的数组是final修饰的为啥还能被改变?
作者:
alwayszhao
时间:
2016-2-21 22:51
谢谢大家
作者:
hi丶bo
时间:
2016-2-22 01:24
change方法返回值是String 然后给S赋值,,return回去
作者:
huang_bing_hua
时间:
2016-2-22 09:34
alwayszhao 发表于 2016-2-18 23:16
首先返回值类型是String,而不是空,第二:有返回值的方法调用,单独调用会报错,建议先赋值调用再输出。
作者:
.cC
时间:
2019-5-18 15:14
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方法里面的局部变量还是指向常量池里面常量。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2