推荐淘宝秋冬男装热卖网店

追求无止境

我的程序人生
随笔 - 31, 文章 - 2, 评论 - 20, 引用 - 0
数据加载中……

一个简单的小测验,考查一下对Java基础的掌握情况

今天看Java Language Specification的时候看到了下面的一段代码:
package testPackage;
class Test {
public static void main(String[] args) {
String hello 
= "Hello", lo = "lo";
System.out.print((hello 
== "Hello"+ " ");
System.out.print((Other.hello 
== hello) + " ");
System.out.print((other.Other.hello 
== hello) + " ");
System.out.print((hello 
== ("Hel"+"lo")) + " ");
System.out.print((hello 
== ("Hel"+lo)) + " ");
System.out.println(hello 
== ("Hel"+lo).intern());
}

}

class Other static String hello = "Hello"; }


package other;
public class Other static String hello = "Hello"; }



输出的结果出人预料。不运行它,大家自己想想答案吧,然后把答案和你的想法贴出来分享给大家吧。
正确答案的话,运行一下运行一下就知道了。。

posted on 2009-08-11 09:39 追求无止境 阅读(1520) 评论(8)  编辑  收藏

评论

# re: 一个简单的小测验,考查一下对Java基础的掌握情况  回复  更多评论   

不错啊
2009-08-11 09:52 | 99读书人

# re: 一个简单的小测验,考查一下对Java基础的掌握情况  回复  更多评论   

编译不通过。不同包非子父类关系之间的访问成员变量应该用public修饰符
2009-08-11 10:04 | 申泽

# re: 一个简单的小测验,考查一下对Java基础的掌握情况  回复  更多评论   

the field other.Other.hello is not visible.

1. 字符串会放在常量池中,也就是会缓冲起来
2. 编译时会优化,例如 "Hel"+"lo" 在编译时会优化为 "Hellol",而带变量的 "Hel"+lo,就只能用 StringBuffer 或 StringBuilder 来连接了,并创建新的字符串对象。
3. 但对于两个 new String("Hello"), new String("Hello") 就不会是同一个对象了,但它们的 intern() 是一样的。
2009-08-11 10:07 | 隔叶黄莺

# re: 一个简单的小测验,考查一下对Java基础的掌握情况  回复  更多评论   

@ 申泽
注意,上面有两个类文件。需要放在不同的包中才行。
2009-08-11 10:22 | 追求无止境

# re: 一个简单的小测验,考查一下对Java基础的掌握情况  回复  更多评论   

@隔叶黄莺
兄弟的java学的不错。牛。。弓虽。。
2009-08-11 10:24 | 追求无止境

# re: 一个简单的小测验,考查一下对Java基础的掌握情况  回复  更多评论   

String hello = "Hello", lo = "lo";
System.out.print((hello == "Hello") + "
System.out.print((Other.hello == hello) + " ");
System.out.print((other.Other.hello == hello) + " ");
System.out.print((hello == ("Hel"+"lo")) + " ");
System.out.print((hello == ("Hel"+lo)) + " ");
System.out.println(hello == ("Hel"+lo).intern());

挨个给解释以下,初学者
2009-08-11 17:05 | 初学者

# re: 一个简单的小测验,考查一下对Java基础的掌握情况[未登录]  回复  更多评论   

这个没有什么意思.

javap -verbose 看一下就知道了.
2009-08-11 18:51 | wonder

# re: 一个简单的小测验,考查一下对Java基础的掌握情况  回复  更多评论   

学习技术!!
2009-08-12 12:31 | 移动12530彩铃

只有注册用户登录后才能发表评论。


网站导航: