关于JAVA字符串的一个问题 String a = "tom" ;String b= "" ;b =a ;b = "Jim" ;System.out.println( "a的值为:" + a );为什么改变a的内容没有变呢,java对象的赋值不是按址传递的吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 final模式懂吗? String 就是 final 的, 意思就是不可改变,不能继承.通俗的讲,你每操作一次都是一个新的对象 答:见每句后的注解说明String a = "tom" ; //此时a指向串对象“tom”String b= "" ; //此时b指向串对象“”(空)b =a ; //将a的值(注意:是引用)给b.此时a与b都指向同一个串对象“tom”b = "Jim" ; //此时b又指向串对象“Jim”,而a仍指向串对象“tom” 你这里是String对象。 b = “jim”是新创建了一个值为“jim”String的对象,a的引用没有变,所以a 和b引用的对象是不同。 java 对象的赋值按址传递其实是错误的。 真正意义上是按值传递的。建议你看一下 : java核心技术第七版第一卷 115-117页 上面有很详细的解答 就如3楼所说的,没改变a的内容只是改变了b的内容,而String对象是immutable(不变的)所以改变b的内容不会影响到a就算a的内容是mutable(可变的)给b重新赋值也无法改变a,因为java中传递对象是object value(只可改变对象内部状态,重新指向新的对象无效) 对了,想起来了,String类是final型的,一旦定义便不可改变,多谢朋友们提醒! java大侠有不 求助高手 TOMCAT连接池 进程释放问题 什么叫重新抛出异常? 整列数据的交换 排序问题 一个i/o方面的问题 一个递归函数,java.求指教 java虚拟机中堆,栈以外程序段存放在哪里啊 初学者关于语句import java.util.Scanner的问题 Java中LinkedList中的getFirst()方法和element()方法有什么区别? 关于使用OS.SetWindowPos让swt窗口不抢焦点的问题 关于spring 注入......................我希望
通俗的讲,你每操作一次都是一个新的对象
String a = "tom" ; //此时a指向串对象“tom”
String b= "" ; //此时b指向串对象“”(空)
b =a ; //将a的值(注意:是引用)给b.此时a与b都指向同一个串对象“tom”
b = "Jim" ; //此时b又指向串对象“Jim”,而a仍指向串对象“tom”
java 对象的赋值按址传递其实是错误的。 真正意义上是按值传递的。
建议你看一下 : java核心技术第七版第一卷 115-117页 上面有很详细的解答
只是改变了b的内容,而String对象是immutable(不变的)所以改变b的内容不会影响到a
就算a的内容是mutable(可变的)给b重新赋值也无法改变a,
因为java中传递对象是object value(只可改变对象内部状态,重新指向新的对象无效)