java中字符串修改的修改

java中字符串修改的修改,第1张

java中字符串修改的修改

例1:

public static void main(String[] args){	
	String str="hello";
	changeStr(str);
	System.out.print(str);  //打印的结果是hello
}
static void changeStr(String str){
	str="hi";
}
1.字符串是char类型的数组 char[]
2.修改时传递的是hello的地址
3.字符串比较特殊,在常量池中的str,修改的时候,不是直接修改了地址对应的char数组,而是重新建了一个char[],地址赋值给str
4,所以修改函数执行之后,外面的str没有发送变化

例2:
java字符串的修改,参考链接

public static void main(String[] args) {
  String x = new String("ab");
  change(x);
  System.out.println(x);
}
public static void change(String x) {
    x = "cd";
}

解决办法

如果我们真的需要去改变对象的值,首先,对象应该是可变的,比如StringBuilder。其次,我们需要确保没有创建新对象并将其分配给参数变量,因为Java只是按值传递。

public static void main(String[] args) {
  StringBuilder x = new StringBuilder("ab");
  change(x);
  System.out.println(x);
}
public static void change(StringBuilder x) {
  x.delete(0, 2).append("cd");
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5707212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存