首页
/
每日頭條
/
職場
/
面試需要問面試官些什麼問題
面試需要問面試官些什麼問題
更新时间:2026-01-12 11:27:16
一、拷貝的引入(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
推荐阅读
深度學習入門實際例子(深度學習科普貼)
深度學習入門實際例子(深度學習科普貼)
     即使熱能以及聲音都是能量的表現形式,但是盡管在你很小的時候,卻也并不需要被教育說不要用“熱對流”這門語言來講話。每次你的孩子偶遇流浪動物的時候,他們也不需要被多次教育就能判斷得出這隻動物到底是貓還是狗。   人類天生就知道如何判斷這些簡單的差異。因為差異如此明顯,對于我們來說,認識到這些差異都是非常自然的,我們将其稱之為常識。相比之下,計算機則需要...
2026-01-12
趙雷寫給成都的歌(高考熱搜卻是牽手門)
趙雷寫給成都的歌(高考熱搜卻是牽手門)
  —[心]點擊右邊紅色字體,輕松關注[心]—   今年的高考登上熱搜的,不是熊孩子們的雷人語錄,而是國企領導在成都太古裡街頭牽手異性,霸占了各大媒體平台。我們不贊成插足别人的感情生活,我們贊成與一人一生一世的長相厮守。   本文以此“牽手門”作為背景,臨風改編自趙雷的歌曲《成都》,供大家欣賞。   趙雷:讓我掉下眼淚的,不止昨夜的酒。臨風:讓我丢下飯碗的,...
2026-01-12
杜淳和陳喬恩最新消息(陳喬恩和杜淳年底結婚)
杜淳和陳喬恩最新消息(陳喬恩和杜淳年底結婚)
  娛樂圈最近最大的喜事莫過于謝娜懷上國民寶寶,半個娛樂圈的明星紛紛出動祝福娜姐。   因為和謝娜一起參加綜藝節目《我們來了》而成為好姐妹的陳喬恩和江一燕也在第一時間送上了祝福。      但卻一不小心成為了網友催婚的對象,更有意思的是竟然有博主曝出陳喬恩将在年底結婚!   結婚對象竟然是曾經一起參加過真人秀《旋風孝子》的杜淳!      看到爆料後,大家紛...
2026-01-12
托特包大容量四季包(托特包看上去精緻又時尚)
托特包大容量四季包(托特包看上去精緻又時尚)
  托特包是一種容量很大的挎包,能裝很多東西,而且在包包的兩側都有着一條帶子,或粗或細方便佩戴。   但帶子的長度都不會過長,剛好能夠被拎在手上或是挎在肩上夾在腋下,也正是因為它容量大的原因,有很多姐妹認為它就是學生黨,上班族的最好幫手。      在上學的路上,或是在通勤上班時,一款托特包是最好的選擇,而且在日常生活中和姐妹一起逛街購物的時候,也可以背上這...
2026-01-12
江西豐城發電廠坍塌案例分析數據(江西豐城施工平台坍塌特别重大事故分包單位)
江西豐城發電廠坍塌案例分析數據(江西豐城施工平台坍塌特别重大事故分包單位)
  昨天,住建部發布了江西豐城發電廠三期擴建工程冷卻塔施工平台坍塌特别重大事故分包單位及項目經理處罰公告。      公告原文如下:   建督罰字〔2018〕15号   河北億能煙塔工程有限公司:   2016年11月24日7時33分,江西豐城發電廠三期擴建工程發生一起冷卻塔施工平台坍塌特别重大事故,造成73人死亡、2人受傷,直接經濟損失10197.2萬元。...
2026-01-12
Copyright 2023-2026 - www.tftnews.com All Rights Reserved