首页
/
每日頭條
/
職場
/
面試需要問面試官些什麼問題
面試需要問面試官些什麼問題
更新时间:2025-07-04 16:55:01
一、拷貝的引入(1)、引用拷貝

創建一個指向對象的引用變量的拷貝。

Teacherteacher=newTeacher("Taylor",26); Teacherotherteacher=teacher; System.out.println(teacher); System.out.println(otherteacher);

輸出結果:

blog.Teacher@355da254 blog.Teacher@355da254

結果分析:由輸出結果可以看出,它們的地址值是相同的,那麼它們肯定是同一個對象。teacher和otherteacher的隻是引用而已,他們都指向了一個相同的對象Teacher(“Taylor”,26)。這就叫做引用拷貝。往期:一百期面試題彙總

面試需要問面試官些什麼問題(面試官問點兒基礎的)1

(2)、對象拷貝

創建對象本身的一個副本。

Teacherteacher=newTeacher("Swift",26); Teacherotherteacher=(Teacher)teacher.clone(); System.out.println(teacher); System.out.println(otherteacher);

輸出結果:

blog.Teacher@355da254 blog.Teacher@4dc63996

結果分析:由輸出結果可以看出,它們的地址是不同的,也就是說創建了新的對象, 而不是把原對象的地址賦給了一個新的引用變量,這就叫做對象拷貝。

面試需要問面試官些什麼問題(面試官問點兒基礎的)2

注:深拷貝和淺拷貝都是對象拷貝

二、淺拷貝(1)、定義

被複制對象的所有變量都含有與原來的對象相同的值,而所有的對其他對象的引用仍然指向原來的對象。即對象的淺拷貝會對“主”對象進行拷貝,但不會複制主對象裡面的對象。”裡面的對象“會在原來的對象和它的副本之間共享。往期:100期面試題彙總

簡而言之,淺拷貝僅僅複制所考慮的對象,而不複制它所引用的對象

(2)、淺拷貝實例

packagecom.test; publicclassShallowCopy{ publicstaticvoidmain(String[]args)throwsCloneNotSupportedException{ Teacherteacher=newTeacher(); teacher.setName("riemann"); teacher.setAge(27); Student2student1=newStudent2(); student1.setName("edgar"); student1.setAge(18); student1.setTeacher(teacher); Student2student2=(Student2)student1.clone(); System.out.println("拷貝後"); System.out.println(student2.getName()); System.out.println(student2.getAge()); System.out.println(student2.getTeacher().getName()); System.out.println(student2.getTeacher().getAge()); System.out.println("修改老師的信息後-------------"); //修改老師的信息 teacher.setName("Games"); System.out.println(student1.getTeacher().getName()); System.out.println(student2.getTeacher().getName()); } } classTeacherimplementsCloneable{ privateStringname; privateintage; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } } classStudent2implementsCloneable{ privateStringname; privateintage; privateTeacherteacher; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } publicTeachergetTeacher(){ returnteacher; } publicvoidsetTeacher(Teacherteacher){ this.teacher=teacher; } publicobjectclone()throwsCloneNotSupportedException{ Objectobject=super.clone(); returnobject; } }

輸出結果:

拷貝後 edgar 18 riemann 27 修改老師的信息後------------- Games Games

結果分析:兩個引用student1和student2指向不同的兩個對象,但是兩個引用student1和student2中的兩個teacher引用指向的是同一個對象,所以說明是淺拷貝。

面試需要問面試官些什麼問題(面試官問點兒基礎的)3

三、深拷貝(1)、定義

深拷貝是一個整個獨立的對象拷貝,深拷貝會拷貝所有的屬性,并拷貝屬性指向的動态分配的内存。當對象和它所引用的對象一起拷貝時即發生深拷貝。深拷貝相比于淺拷貝速度較慢并且花銷較大。

簡而言之,深拷貝把要複制的對象所引用的對象都複制了一遍。

往期:100期面試題彙總

(2)、深拷貝實例

packagecom.test; publicclassDeepCopy{ publicstaticvoidmain(String[]args)throwsCloneNotSupportedException{ Teacher2teacher=newTeacher2(); teacher.setName("riemann"); teacher.setAge(27); Student3student1=newStudent3(); student1.setName("edgar"); student1.setAge(18); student1.setTeacher(teacher); student3student2=(Student3)student1.clone(); System.out.println("拷貝後"); System.out.println(student2.getName()); System.out.println(student2.getAge()); System.out.println(student2.getTeacher().getName()); System.out.println(student2.getTeacher().getAge()); System.out.println("修改老師的信息後-------------"); //修改老師的信息 teacher.setName("Games"); System.out.println(student1.getTeacher().getName()); System.out.println(student2.getTeacher().getName()); } } classTeacher2implementsCloneable{ privateStringname; privateintage; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } publicObjectclone()throwsCloneNotSupportedException{ returnsuper.clone(); } } classStudent3implementsCloneable{ privateStringname; privateintage; privateTeacher2teacher; publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } publicTeacher2getTeacher(){ returnteacher; } publicvoidsetTeacher(Teacher2teacher){ this.teacher=teacher; } publicObjectclone()throwsCloneNotSupportedException{ //淺複制時: //Objectobject=super.clone(); //returnobject; //改為深複制: Student3student=(Student3)super.clone(); //本來是淺複制,現在将Teacher對象複制一份并重新set進來 student.setTeacher((Teacher2)student.getTeacher().clone()); returnstudent; } }

輸出結果:

拷貝後 edgar 18 riemann 27 修改老師的信息後------------- Games riemann

結果分析:

兩個引用student1和student2指向不同的兩個對象,兩個引用student1和student2中的兩個teacher引用指向的是兩個對象,但對teacher對象的修改隻能影響student1對象,所以說是深拷貝。

面試需要問面試官些什麼問題(面試官問點兒基礎的)4

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
職業乞丐生存現狀(關于職業乞丐你們有什麼看法)
職業乞丐生存現狀(關于職業乞丐你們有什麼看法)
  “職業乞丐”是社會的一種病,他們隻要錢不要飯。      有一些人總是很善于利用别人的同情心,賺錢一些不義之财。      曾經我在珠江邊散步,看着珠江夜景深深着迷的時候,突然一個頭發淩亂衣服髒兮兮捧着一把玫瑰小女孩跑到我面前,一話不說就先抱住我退說:“哥哥買支花送給這小姐姐吧,你不買我就不放手。”我一看我身邊剛走來一個180斤的MM。我立馬摸着小女孩的...
2025-07-04
倉山多項工作走在全市前列(新南岸開好局起好步 )
倉山多項工作走在全市前列(新南岸開好局起好步 )
  新南岸開好局、起好步 今年工作這樣幹!   2月8日,重慶市南岸區第十九屆人民代表大會第三次會議舉行,南岸區人民政府區長王茂春作政府工作報告。      報告數據顯示,一年來南岸區實現了經濟止滑穩增,2022年全年地區生産總值增長達到922.1億元,規上工業企業利潤增長54.8%,金融機構存貸款餘額增長7.4%。   王茂春在作報告時指出,2023年南岸...
2025-07-04
我不上班你養得起麼(不上班行不行我養你)
我不上班你養得起麼(不上班行不行我養你)
  相信大家都對星爺《喜劇之王》   下面這段經典對白早就銘記在心   A:不上班行不行?   B:不上班你養我啊?   A:好啊,我養你呀!   而不上班,除了自己動手豐衣足食   你還需要一個真正能養你的賺錢夥伴   福瑞達K系列微卡   有底氣,敢承諾   輕卡級别兩縱七橫高強度槽鋼底盤   标配185R14LT加大增強型貨車輪胎   一頭大象也不在話...
2025-07-04
鄖西90後小夥成功捐獻造血幹細胞(傳遞生命的希望)
鄖西90後小夥成功捐獻造血幹細胞(傳遞生命的希望)
  造血幹細胞移植是目前治療白血病等某些惡性疾病的有效手段,是挽救生命、關愛他人、造福人類的一項重要工程。8月5日,來自魏橋創業集團的90後小夥張硯毅,在得知自己的血樣與一名白血病患者配型成功後,自願無償捐獻造血幹細胞,用無私大愛傳遞生命的希望,成為魏橋創業集團第二個捐獻造血幹細胞的員工。      8月5日上午,魏橋創業集團工會主席範雪蓮和魏橋鋁電公司人力...
2025-07-04
萬茜我們都在努力的活着(萬老闆的每一天都是最好的)
萬茜我們都在努力的活着(萬老闆的每一天都是最好的)
  ​ 本文為紙媒已出刊作品,版權所有,偷盜必究。      和“萬茜”這個沒有半點星味的名字一樣,萬茜屬于“有戲的時候會被瘋狂打call,戲外又被人遺忘”的那種演員,沒有流言蜚語,沒有八卦話題。但她每一次在影視劇中出現,大家又會瞬間地反應道:“是她啊!”《柳如是》是,《獵場》是,《脫身》也是。在娛樂圈,她是一個奇特的存在,隻在乎演技,不在乎紅與不紅;而在生...
2025-07-04
Copyright 2023-2025 - www.tftnews.com All Rights Reserved