其然IT教育集團(tuán)是廣州騰科網(wǎng)絡(luò)技術(shù)有限公司旗下運(yùn)營的網(wǎng)站平臺。其然IT
教育集團(tuán)是一家以提供新型、**的IT技術(shù)培訓(xùn)(教育)解決方案為主要經(jīng)營目標(biāo)的專業(yè)公司,是中國高端IT培訓(xùn)的**品牌。聯(lián)合思科(Cisco)、甲
骨文(Oracle)、紅帽(Red Hat)、華為(Huawei)、微軟(Microsoft)、美國計(jì)算機(jī)行業(yè)協(xié)會(CompTIA)等國際知名IT廠商以 及國內(nèi)300多家高等院校,
開展IT認(rèn)證技能培訓(xùn)和IT職業(yè)課程教育,培養(yǎng)新型IT高級人才,是Pearson VUE國際電子考試中心和Prometric(普爾文)授權(quán)考試中心,并是達(dá)索
(solidworks)、安氏(LinkTrust)的授權(quán)經(jīng)銷商。
其然IT教育集團(tuán)下轄上海分公司、深圳分公司、武漢分公司、杭州分公司等
8個(gè)分支機(jī)構(gòu)。以及30多個(gè)培訓(xùn)網(wǎng)點(diǎn),業(yè)務(wù)涵蓋全國主要大、中型城市。
Java開發(fā)的應(yīng)該
如何掌握上述相關(guān)技術(shù)?
Java開發(fā)的應(yīng)該如何掌握上述相關(guān)技術(shù)?
一:首先,有這樣的一種情況很常見,對于想自學(xué)Java開發(fā)的人來說,他們
大多數(shù)都是非常盲目的,不知道自己改如何入手,很多人在網(wǎng)上找一些視頻,然后瘋狂的過視頻,很快就把一塊內(nèi)容都學(xué)完,他們理解的學(xué)完了就是視
頻看完了,但是讓他們動手去做東西卻做不出來,而我的理解學(xué)完了就是自己能寫出東西,所以對于初學(xué)者來說一定不能盲目,要有自己的規(guī)劃,不然
就是浪費(fèi)時(shí)間白忙活。
二:既然是學(xué)習(xí)Java開發(fā)專業(yè)技術(shù),我個(gè)人的建議是,一定要有一個(gè)能指導(dǎo)
你的人,不能都靠自己閉門造車,這樣的行為并不聰明,結(jié)識一位這方面的人才,時(shí)不時(shí)去問問人家問題,不然你可能會發(fā)現(xiàn)一個(gè)小問題能困擾你一天
,**后還不知道是什么原因。
三:學(xué)習(xí)Java開發(fā)技術(shù),不能跟學(xué)數(shù)學(xué)語文一樣對待,比較剛接觸代碼是不
容易記住的,所以要掌握上述的技術(shù),你還要知道學(xué)習(xí)Java開發(fā)技術(shù)有哪些“坑”。對于學(xué)習(xí)方法這塊是尤為重要的,怎么學(xué)才能讓你學(xué)完了能記住之
前學(xué)的那些,不至于學(xué)完了就忘,這個(gè)問題值得你學(xué)習(xí)之前去思考的。
四:根據(jù)我多年的學(xué)習(xí)情況來看,你平時(shí)一定要養(yǎng)成好的學(xué)習(xí)習(xí)慣,就說我
自己吧!我就喜歡把自己曾經(jīng)遇到的問題整理在電腦的日記本上,然后我會搜集一下博客相關(guān)的Java技術(shù)文章,一些我認(rèn)為比較有用的網(wǎng)站,以后都能
用的上,這是我個(gè)人的學(xué)習(xí)習(xí)慣,相信我,如果你想走的更遠(yuǎn),一定要養(yǎng)成習(xí)慣。
**后給大家一些詳細(xì)的學(xué)習(xí)安排路線:
Java基礎(chǔ):Java基礎(chǔ)語法、數(shù)組、類與對象、繼承與多態(tài)、異常、范型、集
合、流與文件、反射、枚舉、自動裝箱和注解。
數(shù)據(jù)庫:mysql、oracle
Javaweb:HTML與CSS網(wǎng)頁開發(fā)基礎(chǔ)、Java腳本語言、搭建開發(fā)環(huán)境、JSP基
本語法、JSP內(nèi)置對象、JavaBean技術(shù)、Servlet技術(shù)、Ajax技術(shù)
框架:Struts2、Hibernate、Spring、SpringMVC、mybatis
全新升級企業(yè)需求的Java課程
歷經(jīng)16年累計(jì)10余萬Java學(xué)員。打造專業(yè)的課程體系,值得你的信賴
Java基礎(chǔ)
深入解析Java基礎(chǔ),直擊面試常見問題。——184課時(shí)
數(shù)據(jù)庫
及Web前端技術(shù)
包含主流Oracle和MySQL數(shù)據(jù)庫,先進(jìn)的Web前端技術(shù),熱門的JS語言 ——160課時(shí)
Java Web
開發(fā)及服務(wù)端框架
定制開發(fā)企業(yè)級框架,教授Spring技術(shù)核心,企業(yè)開發(fā)部署環(huán)境,規(guī)范代碼
開發(fā)流程及文檔——176課時(shí)
綜合項(xiàng)目實(shí)戰(zhàn)
飛揚(yáng)小鳥、飛機(jī)大戰(zhàn)、俄羅斯方塊、T-DMS數(shù)據(jù)采集項(xiàng)目、T-netctoss項(xiàng)目
、云筆記系統(tǒng)——136小時(shí)2W代碼量
搭建自己網(wǎng)站
16小時(shí)課程實(shí)戰(zhàn)演練
——企業(yè)扶持
C 之拷貝構(gòu)造函數(shù)
>
本文的所有內(nèi)容均來自http://www.cnblogs.com/BlueTzar/articles/1223313.html,感謝此作者:)
對于普通類型的對象來說,它們之間的復(fù)制是很簡單的,例如:
int a=88;
int b=a;
而類對象與普通對象不同,類對象內(nèi)部結(jié)構(gòu)一般較為復(fù)雜,存在各種成員變量。下面看一個(gè)類對象拷貝的簡單例子。
#include <iostream>
using namespace std;
class CExample {
PRivate:
int a;
public:
CExample(int b)
{ a=b;}
void Show ()
{
cout<<a<<endl;
}
};
int main()
{
CExample A(100);
CExample B=A;
B.Show ();
return 0;
}
運(yùn)行程序,屏幕輸出100。從以上代碼的運(yùn)行結(jié)果可以看出,系統(tǒng)為對象B分配了內(nèi)存并完成了與對象A的復(fù)制過程。就類對象而言,相同類型的類對象是**拷貝構(gòu)造函數(shù)來完成整個(gè)復(fù)制過程的。下面舉例說明拷貝構(gòu)造函數(shù)的工作過程。
#include <iostream>
using namespace std;
class CExample {
private:
int a;
public:
CExample(int b)
{ a=b;}
CExample(const CExample& C)
{
a=C.a;
}
void Show ()
{
cout<<a<<endl;
}
};
int main()
{
CExample A(100);
CExample B=A;
B.Show ();
return 0;
}
CExample(const CExample&
C)就是我們自定義的拷貝構(gòu)造函數(shù)??梢?,拷貝構(gòu)造函數(shù)是一種特殊的構(gòu)造函數(shù),函數(shù)的名稱必須和類名稱一致,它的唯一的一個(gè)參數(shù)是本類型的一個(gè)引用變量,該參數(shù)是const類型,不可變的。例如:類X的拷貝構(gòu)造函數(shù)的形式為X(X& x)。
當(dāng)用一個(gè)已初始化過了的自定義類類型對象去初始化另一個(gè)新構(gòu)造的對象的時(shí)候,拷貝構(gòu)造函數(shù)就會被自動調(diào)用。也就是說,當(dāng)類的對象需要拷貝時(shí),拷貝構(gòu)造函數(shù)將會被調(diào)用。以下情況都會調(diào)用拷貝構(gòu)造函數(shù):
一個(gè)對象以值傳遞的方式傳入函數(shù)體
一個(gè)對象以值傳遞的方式從函數(shù)返回
一個(gè)對象需要**另外一個(gè)對象進(jìn)行初始化。
如果在類中沒有顯式地聲明一個(gè)拷貝構(gòu)造函數(shù),那么,編譯器將會自動生成一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù),該構(gòu)造函數(shù)完成對象之間的位拷貝。位拷貝又稱淺拷貝,后面將進(jìn)行說明。
自定義拷貝構(gòu)造函數(shù)是一種良好的編程風(fēng)格,它可以阻止編譯器形成默認(rèn)的拷貝構(gòu)造函數(shù),提高源碼效率。
淺拷貝和深拷貝
在某些狀況下,類內(nèi)成員變量需要?jiǎng)討B(tài)開辟堆內(nèi)存,如果實(shí)行位拷貝,也就是把對象里的值完全復(fù)制給另一個(gè)對象,如A=B。這時(shí),如果B中有一個(gè)成員變量指針已經(jīng)申請了內(nèi)存,那A中的那個(gè)成員變量也指向同一塊內(nèi)存。這就出現(xiàn)了問題:當(dāng)B把內(nèi)存釋放了(如:析構(gòu)),這時(shí)A內(nèi)的指針就是野指針了,出現(xiàn)運(yùn)行錯(cuò)誤。
深拷貝和淺拷貝可以簡單理解為:如果一個(gè)類擁有資源,當(dāng)這個(gè)類的對象發(fā)生復(fù)制過程的時(shí)候,資源重新分配,這個(gè)過程就是深拷貝,反之,沒有重新分配資源,就是淺拷貝。下面舉個(gè)深拷貝的例子。
#include <iostream>
using namespace std;
class CA
{
public:
CA(int b,char* cstr)
{
a=b;
str=new char[b];
strcpy(str,cstr);
}
CA(const CA& C)
{
a=C.a;
str=new char[a]; //深拷貝
if(str!=0)
strcpy(str,C.str);
}
void Show()
{
cout<<str<<endl;
}
~CA()
{
delete str;
}
private:
int a;
char *str;
};
int main()
{
CA A(10,"Hello!");
CA B=A;
B.Show();
return 0;
}
深拷貝和淺拷貝的定義可以簡單理解成:如果一個(gè)類擁有資源(堆,或者是其它系統(tǒng)資源),當(dāng)這個(gè)類的對象發(fā)生復(fù)制過程的時(shí)候,這個(gè)過程就可以叫做深拷貝,反之對象存在資源,但復(fù)制過程并未復(fù)制資源的情況視為淺拷貝。
淺拷貝資源后在釋放資源的時(shí)候會產(chǎn)生資源歸屬不清的情況導(dǎo)致程序運(yùn)行出錯(cuò)。
Test(Test &c_t)是自定義的拷貝構(gòu)造函數(shù),拷貝構(gòu)造函數(shù)的名稱必須與類名稱一致,函數(shù)的形式參數(shù)是本類型的一個(gè)引用變量,且必須是引用。
當(dāng)用一個(gè)已經(jīng)初始化過了的自定義類類型對象去初始化另一個(gè)新構(gòu)造的對象的時(shí)候,拷貝構(gòu)造函數(shù)就會被自動調(diào)用,如果你沒有自定義拷貝構(gòu)造函數(shù)的時(shí)候,系統(tǒng)將會提供給一個(gè)默認(rèn)的拷貝構(gòu)造函數(shù)來完成這個(gè)過程,上面代碼的復(fù)制核心語句就是**Test(Test &c_t)拷貝構(gòu)造函數(shù)內(nèi)的p1=c_t.p1;語句完成的。
相關(guān)推薦:
蘇州JAVA培訓(xùn) 蘇州JAVA培訓(xùn)班 蘇州JAVA培訓(xùn)機(jī)構(gòu)
體驗(yàn)課預(yù)約試聽
倒計(jì)時(shí)
12:00:00