久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>職場>面試需要問面試官些什么問題(面試官問點兒基礎的)

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

發(fā)布時間:2024-01-19閱讀(13)

導讀一、拷貝的引入(1)、引用拷貝創(chuàng)建一個指向對象的引用變量的拷貝。Teacherteacher=newTeacher("Taylor",26);Teacher....一、拷貝的引入(1)、引用拷貝

創(chuàng)建一個指向對象的引用變量的拷貝。

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

輸出結果:

blog.Teacher@355da254blog.Teacher@355da254

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

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

(2)、對象拷貝

創(chuàng)建對象本身的一個副本。

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

輸出結果:

blog.Teacher@355da254blog.Teacher@4dc63996

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

面試需要問面試官些什么問題(面試官問點兒基礎的)(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;}}

輸出結果:

拷貝后edgar18riemann27修改老師的信息后-------------GamesGames

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

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

三、深拷貝(1)、定義

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

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

往期: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();//本來是淺復制,現(xiàn)在將Teacher對象復制一份并重新set進來student.setTeacher((Teacher2)student.getTeacher().clone());returnstudent;}}

輸出結果:

拷貝后edgar18riemann27修改老師的信息后-------------Gamesriemann

結果分析:

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

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

歡迎分享轉載→http://www.avcorse.com/read-32518.html

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖