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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 武腊福 中级黑马   /  2015-5-17 00:16  /  525 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.      编译并运行以下代码的输出结果是?(  )
String s1 = new String("amit");
System.out.println(s1.replace('m','r'));
System.out.println(s1);
String s3 = "arit";
String s4 = "arit";
String s2 = s1.replace('m','r');
System.out.println(s2 == s3);
System.out.println(s3 == s4);


请解!说下原因!

2 个回复

倒序浏览
输出结果为arit  amit  false true

1.   System.out.println(s1.replace('m','r'));  这个输出语句为什么会输出arit这个结果呢?
因为String replace(char oldChar, char newChar) 方法
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。

2.   System.out.println(s1);这个输出结果为amit
因为String replace(char oldChar, char newChar) 方法从栈堆死亡方法结束
而s1变量并没有接收被修改的变量  而String类型不可变 所以输出为amit

3.  System.out.println(s2 == s3);输出结果为false
简单来说这两个对象比较的是地址值,都是新建对象所以地址值不同所以返回false

4.  System.out.println(s3 == s4);输出结果为true
通第三条原理  所以输出 true



回复 使用道具 举报
这么晚 问了朋友才回答出来    学业没达到 为了技术分也是拼了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马