该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-03-07
akunamotata 写道 引用 4.那么(a == (x + y))为什么是false呢?这点暂点有点不大清楚。初步认为是x+y是引用相加,不能放入常量池。
求解 这个是java在运行时期才做的计算,是放入堆里面的,所以==是不一样的 ,和a == (“hello” + “world”)是不一样的,后者是在编译时期做了运算,结果放入常量池,相当于a==a这样的! |
|
返回顶楼 | |
发表时间:2011-03-07
还是能查漏补缺,
lz辛苦了。。。。 |
|
返回顶楼 | |
发表时间:2011-03-07
akunamotata 写道 引用 4.那么(a == (x + y))为什么是false呢?这点暂点有点不大清楚。初步认为是x+y是引用相加,不能放入常量池。
求解 这是因为String类型在相加的时候会另外产生一个新的对象。 |
|
返回顶楼 | |
发表时间:2011-03-07
4.那么(a == (x + y))为什么是false呢?这点暂点有点不大清楚。初步认为是x+y是引用相加,不能放入常量池。
x和y是变量,所以不等,如果改成 final String x = "hello"; final String y = "world"; 把x,y变成常量 (a == (x + y))就会返回true |
|
返回顶楼 | |
发表时间:2011-03-07
很多人 对static 这样的修饰符掌握的不好,包括我在内
|
|
返回顶楼 | |
发表时间:2011-03-07
endall 写道 4.那么(a == (x + y))为什么是false呢?这点暂点有点不大清楚。初步认为是x+y是引用相加,不能放入常量池。
x和y是变量,所以不等,如果改成 final String x = "hello"; final String y = "world"; 把x,y变成常量 (a == (x + y))就会返回true 改成final后,运行结果还真是true了,能分析一下吗? |
|
返回顶楼 | |
发表时间:2011-03-07
基础啊,基础
|
|
返回顶楼 | |
发表时间:2011-03-07
第二题晕了,第七题在大学学C语言的时候老师强调过好几次这种值传递的问题,所以没做错,看来基础有待增强啊~
|
|
返回顶楼 | |
发表时间:2011-03-07
最后修改:2011-03-07
其实应当好好理解字符串常量池的含义。 |
|
返回顶楼 | |
发表时间:2011-03-07
fastbo 写道 endall 写道 4.那么(a == (x + y))为什么是false呢?这点暂点有点不大清楚。初步认为是x+y是引用相加,不能放入常量池。
x和y是变量,所以不等,如果改成 final String x = "hello"; final String y = "world"; 把x,y变成常量 (a == (x + y))就会返回true 改成final后,运行结果还真是true了,能分析一下吗? final类型的变量x+y将在编译时决定值 |
|
返回顶楼 | |