本帖最后由 韩军博 于 2011-12-18 20:00 编辑
(1)if(obj instanceof String){
}
(2)if(obj.getClass() == String.class){
}
(1)(2)从本质来讲是没有什么区别的,都是为了判断obj到底是不是String类型的变量。
应用场景可能是:obj是一个方法的参数,而调用该方法时传递真正类型的参数。
(1)的话相信楼主一定能够理解。
我就主要说(2)。
对象名.getClass()是获取该对象所对应的类在内存中的字节码,只要是同一种类型的对象,在
内存的字节码文件就是同一份。假设用到了String这种类型,则内存中只有String.class这一份
字节码,如果obj是String类型的参数的话,则得到的还是同一份的String.class字节码。==这个操作符
就是判断的内存地址是否相同。从而就得出结论了。
|