注意: 本系列博客是在作者已經(jīng)有一年多的C++經(jīng)驗(yàn)的基礎(chǔ)上學(xué)習(xí)Java的個(gè)人總結(jié),可能并不適合所有看到這篇博客的人。
一、數(shù)據(jù)類型
1.整數(shù):byte,short,int,long 分別對(duì)應(yīng)1,2,4,8字節(jié)長(zhǎng)度
數(shù)據(jù)的范圍和寫法 與 C++一致
byte a=1;
int b=2;
注意:java中是沒(méi)有unsigned類型 這個(gè)需要和C++區(qū)別 也就是說(shuō)Java中的數(shù)都是有符號(hào)的
2.浮點(diǎn)數(shù):double ,float 這個(gè)與c++基本一致 ,區(qū)別在于 float 常量的語(yǔ)法更加嚴(yán)格一些 。
在java中 float a=1.235f; 如果沒(méi)有后邊的f就會(huì)報(bào)錯(cuò)
在C++中 float b=1.235; 如果沒(méi)有后邊的f 編譯器會(huì)發(fā)出警告 ,說(shuō) double 截?cái)喑?float ,并沒(méi)有報(bào)錯(cuò)。因?yàn)樵赾++中 浮點(diǎn)常量默認(rèn)為double ,如果希望是float,則需要加f。
3.布爾類型:boolean 有兩個(gè)字面常量true ,false
注意:java中boolean類型與int類型是不可以通用的!boolean就是它,不是c++中所謂的0與非0;
二、表達(dá)式
1.算術(shù)表達(dá)式 略 與c++一致;
2.關(guān)系表達(dá)式 寫法與c++一致,需要注意的還是boolean問(wèn)題 其運(yùn)算結(jié)果不是0也不是1;
3.條件表達(dá)式 cond? expr1:expr2; 寫法同c++,需要注意的還是boolean問(wèn)題 cond必須是boolean;
4.邏輯表達(dá)式 同c++;
三、語(yǔ)句
java語(yǔ)句和c++語(yǔ)句基本一致 ,需要注意的還是 boolean問(wèn)題
1.if
boolean a=true;if(a){ // .......}
2.for
for(int a=0;a<10;a++){ // .. do something}
3.while
while(true){ //......}
4.switch
int cc=1;
switch (cc)
{
case 1:
a++;
break;
case 2:
a++;
break;
}
ps:C++中如果switch分支超過(guò)4個(gè)的話,編譯器會(huì)對(duì)其進(jìn)行優(yōu)化,使其效率高于4個(gè)連續(xù)if語(yǔ)句,才能發(fā)揮出switch的正真優(yōu)勢(shì)(vs編譯器,其他編譯器可能不同)。具體優(yōu)化細(xì)節(jié),感興趣的請(qǐng)百度。那么Java中它的效率如何,作者并不太知道,因?yàn)樵诔鯇W(xué),就為讀者和自己留的問(wèn)題吧。
四、類的基本特性
1.類的語(yǔ)法
在Java中類是很簡(jiǎn)單的 ,與c++也略有區(qū)別
區(qū)別【1】成員變量 每個(gè)變量前 加訪問(wèn)控制 。
【2】成員函數(shù) 每個(gè)函數(shù)前 同樣加訪問(wèn)控制
【3】可以直接給成員變量賦值初始化
package my;public class Example{ public int id=0; public int s=1; //成員函數(shù) public int getid() { return this.id; } public int setid(int id) { this.id=id; return 0; } public int print() { System.out.println(this.id); return 0; } }
注意:類名要同文件名,且每個(gè)文件中僅有一個(gè)類!
2.類的構(gòu)造函數(shù)
【1】與類同名
【2】無(wú)返回值
【3】可以重載
package my;
public class Example{
public int id=0;
public int s=1; //成員函數(shù)
public Example()
{
id=10;
}
public Example( int a)
{
id=a;
}
public int getid()
{
return this.id;
}
public int setid(int id)
{
this.id=id;
return 0;
}
public int print()
{
System.out.println(this.id);
return 0;
}
}
注意 :java中是沒(méi)有析構(gòu)函數(shù)的 ,java中存在垃圾回收機(jī)制。如需做清理工作,直接自己實(shí)現(xiàn)一個(gè)成員函數(shù)并且在需要的時(shí)候調(diào)用 五、垃圾回收機(jī)制當(dāng)一個(gè)對(duì)象不在被引用時(shí),該對(duì)象將被gc回收public void t(){ Example ex=new Example() ex.print()}當(dāng)t()退出后 創(chuàng)建的對(duì)象就失去作用 關(guān)于垃圾回收的比較詳細(xì)的理解 參考這篇文章關(guān)于回收機(jī)制,隨著我對(duì)Java的理解深入 也會(huì)單獨(dú)做一篇理解
六、數(shù)組對(duì)象Java中數(shù)組是對(duì)象! what? 沒(méi)錯(cuò) 在c++中 數(shù)組是復(fù)合類型,不過(guò)在STL中也提供了類似的模板類 vector 不過(guò)這個(gè)類付出的代價(jià)的效率稍低,c++11中array提供了同數(shù)組一樣的效率且更加安全 。在Java中 所有的對(duì)象都必須new來(lái)創(chuàng)建 int [] a=new int [10];int [] b={1,2,3,4};注意:數(shù)組用c++數(shù)組同樣支持下標(biāo)訪問(wèn)讀寫,標(biāo)號(hào)0~n-1當(dāng)然,還有一系列的成員。。。注意:數(shù)組對(duì)象的創(chuàng)建,僅僅是創(chuàng)建了N個(gè)對(duì)象的null指針
Example[] v=new Example[10];
if(v[0]==null)
{
System.out.println("空");
}
歡迎訪問(wèn)個(gè)人技術(shù)網(wǎng)站:http://www.breeziness.cn/
轉(zhuǎn)載請(qǐng)注明出處 小風(fēng)codec --- www.breeziness.cn