黑马程序员技术交流社区
标题:
JAVA小知识点-----盖楼啦!!
[打印本页]
作者:
朱玲均
时间:
2011-7-18 00:10
标题:
JAVA小知识点-----盖楼啦!!
有时候,我们会发现有些小知识点我们懂,但是懂得不彻底,这些都是我们所学知识点的漏洞,弥补了这些漏洞,我们的基础就会越来越扎实!
比如我们大概都知道String类表示内容不可变的字符串,StringBuffer类表示内容可变的字符串。
但是,
new String(“abc”).equals(new String(“abc”)
的结果为
true
new StringBuffer(“abc”).equals(new StringBuffer(“abc”)
的结果为
false -->因为String类覆盖了父类的equals方法
这你也同时掌握了么?
希望大家多多举一些我们平时容易忽视的小例子,让我们更加强大!
:handshake
作者:
匿名
时间:
2011-7-18 00:23
还有,String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals方法和hashCode方法,所以,将StringBuffer对象存储进Java集合类中时会出现问题。
就像下面的代码一样,
List al = new ArrayList();
al.add(new StringBuffer("haha")); ①
if(!al.contains(new StringBuffer("haha"))){ ②
System.out.println("看样子StringBuffer没有覆盖equals方法和hashCode方法!");
}
结果是打印出了上面这句话。
说明if的括号里面返回了true,al.contains(new StringBuffer("haha"))返回了false,那就进一步说明了
①行new 的“haha”字符串对象和②行new的“haha”字符串对象不相同。这是因为,比较的时候是比较
两个对象的地址值。而在应用中,既然集合里面已经有了“haha”这个字符串,我们再new一个StringBuffer
“haha”的时候,就应该判断两者相同了。这时我们就应该对equals方法和hashCode方法进行覆写。
作者:
匿名
时间:
2011-7-18 00:34
在论坛里面,平时我们大多围绕一个问题展开回答,可能这个问题解答之后受益人只有提问题的人自己,我们需要再广阔一点的范围,让给多的人收益。比如,晒出你认为自己掌握了而别人没有掌握的知识点,这样有很多好处。
首先,有可能你这个自认为掌握的知识点其实你自己也理解错了,但是你确认为你自己是掌握了的,所以在论坛里面你就不可能再向别人进行提问,这样就会把错误埋藏深处,藏下祸患,对自己不利,你在这里说出来后就有权威人士帮着改正;
其次,很大的可能性是你掌握对了这个知识点,拿来我们一起分享,同时我们也受益匪浅了。
这样,受益面就广多了。
作者:
朱玲均
时间:
2011-7-28 20:02
标题:
JAVA标签
public class LabelTest {
public static void main(String[] args){
http://bbs.itheima.com
System.out.println("黑马论坛");
}
}
复制代码
粗略一看,第一反应是:编译器应该提示编译错误!
尝试编译运行上面的程序,有以下结果
黑马论坛
复制代码
分析如下:
1、
http:
是一个标签(合法的标识符后紧跟英文分号);
2、
//
bbs.itheima.com:双斜线后面的内容被注释掉了。
-----------------------------------------------------------------------------------------------------------------------------
顺便复习一下标签的作用
public class LabelTest {
public static void main(String[] args){
label:
for(int i=0;i<10;i++){
for(int j=0;j<8;j++){
//break label;标签label控制跳出两(多)重循环,并结束
//continue label;标签label控制跳出多重循环,从标签处继续
}
}
}
}
复制代码
[
本帖最后由 朱玲均 于 2011-07-28 20:03 编辑
]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2