【Java】_2_Java程式入門第三課

來源:互聯網
上載者:User

  為什麼會想學習Java呢,一句話: 書到用時方恨少。 要不是現場現在需要用到Java,我估計就不會學習這個了,現在才深刻的體會到

:技不壓身這句話的含義。學習的時候不要想到立竿見影的求效果,也許某一天她就用到了,而這個時候,也許你就比別人的路更寬廣了。

所以不要糾結這個東西有沒有用了,學吧,騷年(本來是少年的,結果出現了這個詞)..........,

  上兩次說了一點Java的入門的東西,到這個程度,我們是否想要幹點別的事情呢?因此我們需要來認識一下Java中結構化程式設計的部分:

流程式控制制;以及資料的操作結構:運算子。

【Java 賦值運算子】

  為什麼要說這個運算子呢? 因為太簡單了,簡單到必須說。賦值是什麼意思呢? 我們通過執行個體來說明:

/*This program test the oprator*/public class OprTest{    public static void main(String[] args)    {    //asign value    int IntTest;    System.out.print("The value of IntTest is:"+IntTest);    }}

  上面的程式執行結果是:

  拋出異常了,我們可以看到,編譯的過程報錯,為什麼呢? 這個各位童鞋們可以自己想一下,就不多說了。

  下面我們對代碼進行一下修改:

/*This program test the oprator*/public class OprTest{    public static void main(String[] args)    {    //asign value    int IntTest;        IntTest=100;  //初始設定變數值        System.out.print("The value of IntTest is:"+IntTest);    }}

  執行結果是:

  我們看到這個時候程式已經成功執行。為什麼要在這裡說這個問題呢? 因為我們在C語言中,有些時候不給變數賦值也能編譯通過(沒有啟用ALL Alarm模式),而且運行過程中

有時候也正常,而在Java中,如果變數沒有進行初始化賦值,那麼就不能編譯通過。同時我們也看到,我沒有在定義變數的時候給變數賦初值,而是再起語句初始設定變數,這個地方是與

C語言的叫法不一致的,需要注意。

  賦值運行符,還有一些複合的用法,在下面我們會介紹。

【Java 四則運算】

  知道數數後,我們接受的教育應當就是四則運算了,加、減、乘、除;一切簡單而自然,但是在電腦的世界裡面,簡單卻不自然了。我們通過執行個體來認識一下四則運算:

/*This program test the oprator*/public class OprTest{    public static void main(String[] args)    {    //asign value    int IntTest;        IntTest=100;  //初始設定變數值        System.out.println("The value of IntTest is:"+IntTest);    //add    int Sum;        Sum=IntTest + 20121221;        System.out.println("Sum=IntTest+20121221="+Sum);    //sub    int Dif;        Dif=Sum - 300;        System.out.println("Dif="+Dif);    //Multiplication    long Mul;        Mul=Sum * Dif;        System.out.println("Sum*Dif="+Mul); //overflow, but can execute,so you need pay atention to this    double DoubleMul;         DoubleMul=1.0*Sum* Dif; //here why we need to muliply with 1.0 ??         System.out.println("1.0*Sum*Dif="+DoubleMul);        //Division    int Div;        Div=Dif/789;            System.out.println("Dif/789="+Div); //Normally 20121021/20121321 = 0.999985;how can the result be ?                 double DoubleDiv;        DoubleDiv=1.0*Dif/789;            System.out.println("1.0*Dif/789="+DoubleDiv); //IS the same wiht the statement Div=Dif/Sum; ??        //Mod    int Mod;            Mod=Sum % 2; //Is this equal to Sum / 2 ??            System.out.println("Sum % 2 ="+Mod);            System.out.println("Sum / 2 ="+Sum/2);       //Multiply plus and sub    int PostPlus;    int PrePlus;        int PostSub;    int PreSub;            System.out.println("Mod="+Mod+";"+" Dif="+Dif);        PostPlus=Mod++;            System.out.println("Mod++ is:"+PostPlus);            PostPlus=++PostPlus;            System.out.println("++Mod++ is:"+PostPlus);            PostSub=Dif--;            System.out.println("Dif-- is:"+PostSub);            PreSub=--PostSub;            System.out.println("--Dif-- is:"+PreSub);        }}

  上面程式啟動並執行結果是:

  四則運算需要說明的是:  在進行計算的時候,會進行類型轉換。對於  /  運算子,如果運算元都是整型,則結果是整型;如果運算元有浮點類型,則結果

是浮點類型。對於 ++ 和 —— 運算子,則和C語言一樣。

【Java關係運算子】

  Java提供了功能豐富的關係運算子:  == 、 != 、 <、<=、>、>=

  這些運算子的效果和C語言中是一樣的;這裡就不進行具體的介紹了,但是有一點需要說明,在判斷兩個浮點數相等的時候,不能簡單的用==符號進行比較。

我們就做一個簡答的測試。

    //Equal to     float fNum1=1.0F;        float fNum2=0.99999999F;    if(fNum1!=fNum2)       System.out.println("1.0 != 0.9999999");

  這段程式的輸出是什麼呢?輸出結果如下所示:

  這裡可以看到,什麼也沒有輸出,那麼就表示Java在判斷if條件的時候,將 fNum1 判斷為與fNum2相等了。

【Java 邏輯運算子】

  在Java中也提供了邏輯運算子: 與、或、非;並且沿用了C語言的符號,與用 && 表示; 或用 || 表示;非用 ! 表示。

具體的與或非邏輯我們就舉例了。

  值得一提的是: 與或非邏輯運算過程中,有一個“短路”的求值過程,當可以判斷出結果的時候就不會計算後面的數值了。這個有時候會影響參數的傳遞過程。

具體的執行個體我們等到討論方法的時候再舉例。

  Java中還提供了一個三元運算子;那就是 “:?”。 這個運算子的計算規則與C語言一樣,我們就不再舉例了。

 

【Java 位元運算符】

  Java提供了與C語言類似的位元運算符,這些位元運算符應用非常廣泛,通常用於“屏蔽技術”(怎麼感覺像PLC中的屏蔽,不過兩者還是有區別的)。位元運算符有:

按位與、按位或、按位異或、按位非。

  具體的執行個體我們就不舉例了,有一個簡單的應用就是求byte類型的溢出值:   300&0XFF; 具體執行個體見:http://www.cnblogs.com/volcanol/archive/2012/12/18/2824169.html

  這裡還有一個有趣的事情就是: & 和 | 可以對boolean的進行求值,其計算規則和用法和邏輯運算子一樣, & 對應 &&,而| 對應||; 我們可以看一個執行個體:

       //Bit oprator       boolean bTest1=true;       boolean bTest2=false;       if(bTest1 & bTest2)       System.out.println("True & True is ture");       if(bTest1 | bTest2)       System.out.println("True | True is ture");

  執行結果如下所示:

 

【Java 移位元運算符】

  在Java中也C語言一樣,也提供了移位元運算符,同樣移位元運算符適合於整型數的計算。Java提供了: 右移>>、左移<<兩種運算子。其具體的用法和C語言的移位

運算子一致。

  我們知道在C語言中右移運算子>>,最高位的補齊規則由編譯器決定,標準並沒有規定,為了消除這個歧義,Java特別設計一個右移運算子 ">>>" ; 並且規定

>> 運算子是符號位填充,即>> 不會改變數值的正負; 而>>> 則規定用0補齊最高位。

 

【Java中的常量】

  我們知道在C語言中提供了define機制來定義符號常量,或者說符號字面值;而在C++中則另外提供了const這一機制補充“符號字面值”的使用,那麼在Java中有沒有

提供一種類似的機制呢?

  很顯然,提供這樣一種機制,將有利於編程人員的程式編寫和閱讀;在Java中也提供了這樣的機制。那如何?呢?

  在Java中我們可以通過 final 關鍵字來定義符號常量。其定義文法為:

  final   datatype  VaribleName=常量字面值;

  下面我們通過一個執行個體來說明這個問題:

  我們在看下一個例子:

  

  類中可以定義類常量,就像上面的定義,但是這樣定義是預設為私人的呢?還是public的呢? 這裡留下一個疑問,等到以後我們學到修飾符的時候再來解答。

下面是這次測試代碼:

/*This program test the oprator*/public class OprTest{    public static void main(String[] args)    {        /*********    //asign value    int IntTest;        IntTest=100;  //初始設定變數值        System.out.println("The value of IntTest is:"+IntTest);    //add    int Sum;        Sum=IntTest + 20121221;        System.out.println("Sum=IntTest+20121221="+Sum);    //sub    int Dif;        Dif=Sum - 300;        System.out.println("Dif="+Dif);    //Multiplication    long Mul;        Mul=Sum * Dif;        System.out.println("Sum*Dif="+Mul); //overflow, but can execute,so you need pay atention to this    double DoubleMul;         DoubleMul=1.0*Sum* Dif; //here why we need to muliply with 1.0 ??         System.out.println("1.0*Sum*Dif="+DoubleMul);        //Division    int Div;        Div=Dif/789;            System.out.println("Dif/789="+Div); //Normally 20121021/20121321 = 0.999985;how can the result be ?                 double DoubleDiv;        DoubleDiv=1.0*Dif/789;            System.out.println("1.0*Dif/789="+DoubleDiv); //IS the same wiht the statement Div=Dif/Sum; ??        //Mod    int Mod;            Mod=Sum % 2; //Is this equal to Sum / 2 ??            System.out.println("Sum % 2 ="+Mod);            System.out.println("Sum / 2 ="+Sum/2);       //Multiply plus and sub    int PostPlus;    int PrePlus;        int PostSub;    int PreSub;            System.out.println("Mod="+Mod+";"+" Dif="+Dif);        PostPlus=Mod++;            System.out.println("Mod++ is:"+PostPlus);            PostPlus=++PostPlus;            System.out.println("++Mod++ is:"+PostPlus);            PostSub=Dif--;            System.out.println("Dif-- is:"+PostSub);            PreSub=--PostSub;            System.out.println("--Dif-- is:"+PreSub);    *********/        /********************    //Equal to     float fNum1=1.0F;        float fNum2=0.99999999F;    if(fNum1!=fNum2)       System.out.println("1.0 != 0.9999999");    ***********************/       /******************       //Bit oprator       boolean bTest1=true;       boolean bTest2=false;       if(bTest1 & bTest2)       System.out.println("True & True is ture");       if(bTest1 | bTest2)       System.out.println("True | True is ture");    ************/        final  int  finalIntTest=100;               System.out.println("finalIntTest is:"+finalIntTest);        }}

 

  發現Java是一種類C的語言,很多的機制和規則與C語言非常相似,但是需要細心的區別兩者存在的區別。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.