黑马程序员技术交流社区
标题:
一个程序的运行结果,求解答
[打印本页]
作者:
我自信我很牛
时间:
2013-3-21 22:53
标题:
一个程序的运行结果,求解答
public class Demo5_StringValue {
public static void main(String[] args) {
String strValue = "ABCDEFG";
strValue.substring(3);
strValue.concat("123");
strValue.replace("ABC", "XXX");
System.out.println(strValue);
String value = new String ("ABCDEFG");
System.out.println(strValue == value);
}
}
//为什么结果是这样的求解释:
//ABCDEFG
//false
作者:
IT菜鸟
时间:
2013-3-21 23:07
1. String 是final 类,所以不管什么操作,都产生新的字符串,原来的字符串的值不变,所以打印ABCDEFG
2.String 是Object ,==比较的是地址,两个不同的Object对象地址 不可能一样 所以false
作者:
小路飞
时间:
2013-3-22 00:21
本帖最后由 侯国奇 于 2013-3-22 00:22 编辑
System.out.println(strValue);
打印结果是原值,是因为字符串一旦被初始化后就不可以被改变。
System.out.println(strValue == value);
打印结果是false,是因为比较的是两个内存地址值,而不是字符串本身内容。
可以用System.out.println(strValue.equals(value));得出true的结论。
作者:
丁一
时间:
2013-3-22 08:23
public class Demo5_StringValue {
public static void main(String[] args) {
String strValue = "ABCDEFG"; //定义一个字符串
strValue.substring(3); //这个是返回一个子字符串,从第3个开始直到结尾, 这句没有实际意义,没输出没改变原来 strValue=strValue.substring(3) 这个是生成新的并返回
strValue.concat("123"); //<span style="line-height: 1.5;">concat</span><span style="line-height: 1.5;">将123连接到</span>strValue<span style="line-height: 1.5;">的结尾,</span><span style="line-height: 1.5;">这句没有实际意 义</span><span style="line-height: 1.5;">strValue=</span><span style="line-height: 1.5;">strValue.concat("123") 这样才能添加并返回</span>
复制代码
作者:
王龙涛
时间:
2013-3-22 10:15
字符串是一个特殊的对象,一旦被初始化就不可以改变。所以打印ABCDEFG
strValue是一个对象
value是2个对象
“==”比较两个变量本身的值,即两个对象在内存中的地址。
“equals()”比较字符串中所包含的内容是否相同。
LZ用==比较返回false,用equal()比较则返回true
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2