论坛首页 海阔天空论坛

阿里巴巴宣讲会归来

浏览 2624 次
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-05-21  

     昨晚跑南大本部去听了阿里巴巴的宣讲会,顺便还参加了一场比试,比试被我搞水了……

 

     宣讲会来了两位大佬:鲁肃和愚公。愚公这名字早有耳闻了,他的《大道至简》也看过,好书!他的宣讲也比较有实干,多少能学到点实实在在的知识;鲁肃的演讲内容就比较空洞了,有炫耀的感觉,讲了很多支付宝成功的经历。宣讲会嘛,就是给公司做宣传的,好把人讲得热血沸腾,争着来加盟~但他的话语又不是很有渲染力,听着就没什么感觉了,怪不得愚公要开玩笑的讽刺他说后排都睡倒一片了……

 

     我一直不喜欢做考试,于是这场笔试也被我搞水了~但我还是挺喜欢阿里巴巴出的题目的,纯死背记忆的东西不多,还有些开放题可以自由发挥(这种是我的最爱!)。郁闷的是Java题的第一道就被我弄混了,是一道字符串的比较题。考的内容就是比较字符串用“==”会有什么结果,显然都是false的,因为String不是基础类型。但败在最近在学Python,Python里对字符串变量有缓存机制的,只要长度不是太长(我机子上是20个字符),都会只用同一块内存空间保存内容。所以看到题目上就那么几个字符,我想都没多想就选了都是true了……但我Java重来都是用equal的啊,有点冤~再说这种错误就算犯了,单元测试里马上能发现的啊~嘿嘿。

   发表时间:2010-05-21  
确认都是false?也许你蒙对了,true的估计不少
两string的值如果编译期就能确认的,貌似可能true,运行时才能确认的,基本为false
其实和python一样,也有缓存机制
0 请登录后投票
   发表时间:2010-05-21  
zhouxwyeah 写道
确认都是false?也许你蒙对了,true的估计不少
两string的值如果编译期就能确认的,貌似可能true,运行时才能确认的,基本为false
其实和python一样,也有缓存机制


这我知道~题目不是做"hello"=="hello"这样的比较,它确实要在运行时才组合被比较的字符串的。
但Python里像这样的结果就是True的:

ab='HelloWorld'
a='Hello'
b='World'
print ab==a+b
 

哎,反正都是错了……话说我也没寄多大希望,看当时的情况,好多都是研究生……

 

0 请登录后投票
   发表时间:2010-05-21  
呵呵,了解下
0 请登录后投票
   发表时间:2010-05-25  
ab='HelloWorld'
a='Hello'
b='World'
System.out.print(ab==a+b);

java 里面也是true、
0 请登录后投票
   发表时间:2010-05-25  
zhxing 写道
ab='HelloWorld'
a='Hello'
b='World'
System.out.print(ab==a+b);

java 里面也是true、

难道用的解析器不同?不同环境下有不同结果?有趣了~我windows下,sun的jdk1.6u20,用Eclipse执行的,结果false……
0 请登录后投票
   发表时间:2010-05-25   最后修改:2010-05-25
由于a和b都是变量,所以在a+b的时候,jvm就会用StringBuild来完成字符串拼接。所以就成了:

String ab="HelloWorld";
String a = "Hello";
String b = "World";
StringBuild str = new StringBuild();
str.append(a);
str.append(b);
System.out.println(ab==str); //这当然是false了。


举个反例,如果a和b都是常量,就不一样了,大家都知道,常量字符串在jvm里都会有常量池维护:

String ab = "HelloWorld";
final String a = "Hello";
final String b = "World";

/*
 * 这里跟 String str = "Hello" + "World"; 是一样的。
 * "Hello" + "World" 既然是常量加常量,结果理所当然是常量"HelloWorld",
 * 而常量"HelloWorld"在前面已经定初始化了,所以理所当然直接引用了。
 */
String str = a + b; 

System.out.println(ab==str); //所以这里就true了。







zhxing 写道
ab='HelloWorld'
a='Hello'
b='World'
System.out.print(ab==a+b);

java 里面也是true、

如果你依然坚持的你观点,请给出测试代码   :)

1 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics