关于Java中Object类的一些疑惑 关于java 中Object类中的一个方法getClass(...
Java\u4e2d\u5173\u4e8eobject\u7c7b\u7684equals\u65b9\u6cd5\u7684\u8fd9\u53e5\u8bdd\u6211\u6709\u70b9\u4e0d\u61c2Object\u7c7b\u63d0\u4f9b\u7684equals\u65b9\u6cd5\u5224\u65ad\u7684\u662f\u4e24\u4e2a\u5bf9\u8c61\u7684\u5730\u5740\u662f\u5426\u76f8\u7b49\uff0c\u5b83\u7b49\u4ef7\u4e8e==\u8fd0\u7b97\u7b26\u3002\u5982\u679c\u4f60\u8981\u5224\u65ad\u4e24\u4e2a\u5bf9\u8c61\u7684\u5185\u5bb9\u662f\u5426\u76f8\u7b49\u9700\u8981\u91cd\u5199equals\u65b9\u6cd5\u3002String\u7c7b\u7684equals\u65b9\u6cd5\u5c31\u91cd\u5199\u4e3a\u5224\u65ad\u4e24\u4e2a\u5b57\u7b26\u4e32\u7684\u6bcf\u4e2a\u5b57\u7b26\u662f\u5426\u4e00\u4e00\u76f8\u7b49\u3002
\u56e0\u4e3ap.getClass() \u8fd4\u56de\u7684\u662fClass\u5bf9\u8c61\u3002
\u800cc.getName() \u8fd4\u56de\u7684\u662fClass\u5bf9\u8c61\u7684\u5c5e\u6027\u53d8\u91cf\u3002
第二, 为什么我们平时不干脆什么都用Object数组类存放数据, 其实这个问题可以反问一下,为什么要用Object数组存放,有什么好处吗?
第三, 我不知道你了不了解道继承, 如果不知道, 你还是先往后看, 别想这些奇怪的东西. 如果你知道, 举个例子, 你自定义一个学生类, 里面有一个方法计算分数score(), 你把学生对象存入Object数组, 如果你要计算分数, Object里面没有score方法, 就必须把Object类型转换为学生类型, 这样就不如存成具体类来的方便.
第四, 类型还能提供可读性, 越具体的类型,越方便理解 Object.study()跟 Student.study()哪个好理解? 再者,假如你调用别人的库, 返回的是Object数组, 你能从Object看出怎么使用这个数据吗? 或者说,你怎么处理这些Object数据?
因为Object[]数组中的元素只能调用Object类拥有的方法,不能调用Object类没有而子类拥有的方法,这在大部分情况下是无用的。
绛旓細绛旀鏄疉锛屽洜涓轰笉鏄兘鏄洿鎺ョ户鎵Object绫荤殑锛屽緢澶氶兘鏄棿鎺ョ户鎵跨殑
绛旓細涓銆佸湪Object绫涓鐨瀹氫箟涓:public native int hashCode();鏄竴涓湰鍦版柟娉曪紝杩斿洖鐨勫璞$殑鍦板潃鍊笺備絾鏄紝鍚屾牱鐨勬濊矾锛屽湪String绛夊皝瑁呯被涓姝ゆ柟娉曡繘琛屼簡閲嶅啓銆傛柟娉曡皟鐢ㄥ緱鍒颁竴涓绠楀叕寮忓緱鍒扮殑 int鍊笺備簩銆佸湪閲嶅啓浠讳綍绫诲緱hashcode鏂规硶鏃跺繀椤婚伒寰互涓嬪嚑鐐癸細1銆佸湪Java搴旂敤鐨勫悓涓娆℃墽琛岃繃绋嬩腑锛屽悓涓瀵硅薄琚娆...
绛旓細A锛氭槸鐨勶紝Object绫绘槸鎵鏈夌被鐨勭埗绫伙紝鑰屼笖鏄敮涓涓嶇敤鎸囧畾鏄庣‘缁ф壙鐨勭被銆侭锛氭帴鍙d笉缁ф壙Object绫荤殑锛屽悓鐞嗘帴鍙f病鏈夋瀯閫犲嚱鏁般侰锛== 姣旇緝鐨勬槸鍐呭瓨鍦板潃銆備娇鐢╡quals鎵嶆槸璋冪敤equals鏂规硶銆侱锛氬彲浠ヤ娇鐢紝娌℃湁瀹氫箟鍒欎娇鐢ㄧ埗绫荤殑锛屾渶缁堢殑鐖剁被灏辨槸Object绫伙紝鑰孫bject绫讳腑杈撳嚭鐨勬槸瀵硅薄绫诲瀷鍜屽湴鍧銆
绛旓細equals 鏂规硶鏄 java.lang.Object 绫荤殑鏂规硶銆傛湁涓ょ鐢ㄦ硶璇存槑锛氾紙1锛夊浜庡瓧绗︿覆鍙橀噺鏉ヨ锛屼娇鐢ㄢ==鈥濆拰鈥渆quals()鈥濇柟娉曟瘮杈冨瓧绗︿覆鏃讹紝鍏舵瘮杈冩柟娉曚笉鍚屻傗==鈥濇瘮杈冧袱涓彉閲忔湰韬殑鍊硷紝鍗充袱涓璞″湪鍐呭瓨涓殑棣栧湴鍧銆傗渆quals()鈥濇瘮杈冨瓧绗︿覆涓墍鍖呭惈鐨勫唴瀹规槸鍚︾浉鍚屻傛瘮濡傦細String s1,s2,s3 = "abc",...
绛旓細姣斿璇翠綘寰閲岄潰瀛樹簡涓涓硷紝浣犲湪鍙栬繖涓鐨鏃跺欙紝java瀹為檯涓婇氳繃hashCode()鏉ユ壘閭d釜鍊硷紝鍥犱负杩欐牱閫氬父姣旇緝蹇傚鏋滀綘瑕嗙洊浜唀quals()鏂规硶锛屾剰鍛崇潃鍘熸潵涓嶇浉绛夌殑涓や釜瀵硅薄鐜板湪鍙兘鍙樺緱鐩哥瓑锛屼絾hashCode()鐨勫煎嵈涓嶇浉绛夛紝杩欐牱浣犱娇鐢℉ashTable灏变細鍑虹幇瀛樿繘鍘荤殑涓滆タ鎵句笉鍒般備笉瑕佸拷鐣ヨ繖涓棶棰橈紝鍥犱负HashTable绛夌瓑绫荤敤...
绛旓細Object鏄墍鏈绫荤殑鍩虹被Class鍔犺浇绫绘枃浠剁殑涓滀笢甯哥敤鍒板弽灏勬満鍒朵笂Class c=Class.forName(objName);鍔ㄦ佺殑鍔犺浇杩愯绫绘枃浠朵篃灏辨槸鍦ㄨ繍琛屾椂鍙互鍒嗘瀽杩欎釜绫荤殑鑳藉姏
绛旓細濂藉鏄紝杩欐牱鍙互閫傚簲鏇村箍娉涚殑浼犲弬绫诲瀷鑰屼笉蹇呮瘡涓绫荤殑鍙傛暟绫诲瀷閮藉幓涓撻棬瀹氫箟涓涓姛鑳界被浼肩殑鏂规硶锛屽綋涓涓柟娉曚负 fun(Object a)锝涳綕鐨勬椂鍊 浣犵敤String鍋歛涔熷彲浠ワ紝鐢╕ourClass鑷畾涔夌殑绫诲仛a绛夐兘鍙互銆傘傘傝屼綘濡傛灉鍙槸 fun(String a){ }鐨勮瘽锛屽氨鍙兘鐢⊿tring鏉ュ仛鍙傛暟a銆傚綋浣犻渶瑕佸叾浠栧弬鏁扮殑fun鐨勬椂鍊...
绛旓細鍙傝冧簡API锛岃繖涓柟娉曟槸鍙互閲嶅啓鐨勶紝浣嗘槸蹇呴』閬靛惊鍘熸潵鐨勮鍒欙紝涓嬮潰鏄疉PI涓婄殑瑙i噴锛歵oString public String toString()杩斿洖璇ュ璞$殑瀛楃涓茶〃绀恒傞氬父锛宼oString 鏂规硶浼氳繑鍥炰竴涓滀互鏂囨湰鏂瑰紡琛ㄧず鈥濇瀵硅薄鐨勫瓧绗︿覆銆傜粨鏋滃簲鏄竴涓畝鏄庝絾鏄撲簬璇绘噦銆傚缓璁墍鏈夊瓙绫婚兘閲嶅啓姝ゆ柟娉曘Object 绫荤殑 toString 鏂规硶杩斿洖涓涓瓧绗...
绛旓細java鐨 鏁扮粍缁撴瀯鍦╦vm鐨勫爢鍜屾爤涓婃槸涓嶅悓鐨 浣嗘槸鎴戜釜浜烘病鏈夌悊瑙h繖闂濡傛灉鎻愰棶鑰呬簡瑙f杩庡洖澶嶆垜 鏈夊叧涓嶅畾鍙傛暟鐨勪娇鐢 public viod method(Object[] obj,Object...) { Obj鎿嶄簡鑷繁锛泒 涓嶈繃锛屼笉瀹氬弬鏁版湁涓や釜瑙勫畾锛氱涓锛屾柟娉曠殑鍙傛暟鍒楄〃涓渶澶氬彧鏈変竴涓笉瀹氶暱搴︾殑鍙傛暟锛涚浜岋紝灏辨槸涓嶅畾闀垮害鐨勬暟缁...
绛旓細骞朵笉鑳斤紝鍦∣bject涓璫lone鏄竴涓 protected native 鐨勬柟娉 瑕佽皟鐢Object鐨clone鏂规硶锛屽繀椤诲疄鐜癈lonable鎺ュ彛锛屽湪杩愯鏃讹紝jvm浼氬仛妫娴嬶紝濡傛灉娌℃湁瀹炵幇Clonable鎺ュ彛锛屽氨浼氭姏鍑篊loneNotSupportedException寮傚父銆傚鏋滃湪绫荤殑鍐呴儴璋冪敤clone鏂规硶锛屽彲浠ョ洿鎺ヨ皟鐢ㄧ埗绫荤殑clone鏂规硶 瑕佸湪澶栭儴璋冪敤瀹冿紝蹇呴』瀹氫箟涓涓猵ublic鐨勬柟娉曪紝...