程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java語言入門教程(八):Java語言中的運算符與流程控制

Java語言入門教程(八):Java語言中的運算符與流程控制

編輯:關於JAVA

不論使用何種語言,最終都是為了實現業務邏輯。在面向對象的編程語言中 ,業務邏輯都在方法中實現。因此,對於初學者來說,了解完成Java類方法體的 基本知識點是非常必要的。本文中,將介紹編寫方法體必須了解的兩個方面:運 算符,流程控制。

Java中的運算符根據其功能,可以分成4類。首先需要注意的是,Java中的運 算符是不能重載的。下面分別對4類運算符進行介紹。

1、 算術運算符:+,-,*,/,%,++,--

算術運算符是對基本數據類型進行運算的操作符,其中容易混淆的是/表示除 ,而%表示取余。另外需要注意的是++,--兩個自加自減運算符的區別,如下程序 。

package com.csst.test;
public class Test1 {
    /**
     * @param args
     */
    public static void main(String[] args) {
       // TODO Auto-generated method stub
       int i=0;
       System.out.println(i++);
       System.out.println(++i);
       int j=0;
       System.out.println(j--);
       System.out.println(--j);
    }
}

++,--在變量後,是先取變量沒有運算前的值,當作表達式的返回值,然後進 行運算。而++,--如果在變量前,是先對變量進行運算,然後將運算結果作為表 達式的返回值。需要注意的是,不管在前還是在後,對於參與運算的變量本身, 都是進行了一次加1或者減1的操作,沒有區別,有區別的是返回值的值。

算術運算符都是針對基本數據類型進行運算的,只有+除外,可以使用+連 接兩個字符串。如:

String s=”Hello”+” World”;//String的值是Hello World

2、 位運算符:&,|,^,~,<<,>>,>>>

位運算符是針對二進制的數進行運算的操作符。與操作&的運算規則是兩 個都是1才是1,或操作 | 的規則是一個是1就是1,異或 ^ 的規則是不同的是1 ,相同的為0。取反操作~是1變0,0變1。

<<:左移運算符,規則為,拋掉相應位數的高位,在對應的空位補0。 如:

0110 1001 << 2 =1010 0100

>>:有符號右移,規則為,拋掉相應位數的低位,如果移位前,最高 一位是0,則在對應的高位都補0,如果移位前,最高一位是1,則在對應的高位 都補1。

0110 1001 >> 2 =0001 1010

1110 1001 >> 2 =1101 1010

>>>:無符號右移,規則為,拋掉相應位數的低位,在對應的空位 補0:

0110 1001 >>> 2 =0001 1010

1110 1001 >>> 2 =0001 1010

注意:右移運算符分有符號和無符號,而左移沒有這個區別。另外左移一位 相當於乘2,右移一位相當於除以2,速度比較快。

3、 比較運算符:>,<,>=,<=,= =,!=

比較運算符是對基本數據類型的二進制進行比較。需要注意的是==表示比 較,=表示賦值。另外,==和!=可以對引用類型比較,比較的是虛地址。如:

String s1=”Hello”;
String s2=”Hello”;
String s3=new String(“Hello”);
System.out.println(s1==s2);//輸出true
System.out.println(s1==s3);//輸出false

4、 邏輯運算符:&,|,^,!,&&,||

在Java語言中,邏輯值使用true和false進行表示,而1和0不表示邏輯,表示 二進制的數。比如:T1&T2,只有當T1和T2都是true時,才返回true

T1|T2:T1和T2只要有一個是true,返回值就是true。

T1^T2:T1和T2不同的時候,返回ftrue,相同的時候返回false。

!T1:T1是true,返回false,T1是false,返回true。

&&,||被稱為雙與及雙或。

T1&&T2: 只有當T1和T2都是true時,才返回true。但是與單與& 不同的是,雙&

會發生短路問題,如T1是false,則不會判斷T2的值,直接返回false。而單 與不同,不論T1的值是true還是false,都會判斷T2的值。

T1||T2:與雙與類似,雙或當T1為true時,也會發生短路,直接返回true, 而不判斷T2。

在運算符這個知識點,有以下幾點需要注意:

1、 記清楚每種運算符是針對什麼類型進行運算。比如不能對兩個字符串使 用>比較,因為>只比較基本類型。

2、 移位運算符中的右移分有無符號兩種。

3、 比較運算符幾乎都用來比較基本數據類型,只有==,!=除外。

4、 &&,||的短路問題。

了解了Java語言中常用的運算符後,再來看看方法的流程控制。程序的流程 無非3種:

1. 順序的:順序的流程就是一條一條語句執行。

2. 分支流程:分支是常見的流程,Java語言對分支控制和其他語言類似, 可以使用if,else以及switch case控制,如下代碼:

package com.csst.test;
public class Test2 {
/**
 * @param args
 */
public static void main(String[] args) {
        // TODO Auto-generated method stub
        int x=1;
        int y=2;
        if(x==1){
               System.out.println("x==1");
        }else{
               System.out.println("x!=1");
        }
        switch(y){
        case 1:System.out.println("1");
        case 2:System.out.println("2");
        case 3:System.out.println("3");break;
        default:System.out.println("default");
        }
}
}

該程序運行結果:

x==1

2

3

需要注意的是,if後的括號中,一定是一個布爾值的表達式。而switch的括 號中,可以是byte,short,int,char,enum(Java5以後有的新類型,枚舉),其他 類型不可以。另外,y的值是2,打印結果卻是2,3。因為case 2後邊的語句沒有 break來跳出,所以會繼續運行,直到遇到第一個break為止。可以說,case後邊 的開關值,只是決定了switch流程的入口,但是出口完全取決於break的出現位 置。

3、循環邏輯

循環邏輯即重復執行某段代碼,Java中有三種循環,如for,while,do while, 如下:

package com.csst.test;
public class Test3 {
       /**
        * @param args
        */
       public static void main(String[] args) {
              // TODO Auto-generated method stub
              for(int i=0;i<3;i++){
                     System.out.println("i="+i);
              }
              int x=4;
              while(x>0){
                     System.out.println("x="+x);
                     x--;
              }
              int y=5;
              do{
                     System.out.println("y="+y);
                     y--;
              }while(y>0);
       }
}

程序運行結果如下:

i=0

i=1

i=2

x=4

x=3

x=2

x=1

y=5

y=4

y=3

y=2

y=1

Java類中,可以在循環邏輯中,使用標簽來標記循環,通過 break,continue關鍵字控制循環,以for循環為例。

package com.csst.test;
public class Test4 {
       /**
        * @param args
        */
       public static void main(String[] args) {
              // TODO Auto-generated method stub
              loop1: for(int i=0;i<4;i++){
              loop2:     for(int j=0;j<3;j++){
                            if(i==j){
                                   break;
                            }
                            if(i<j){
                                   continue loop1;
                            }
                            System.out.println("i="+i+" 

j="+j);
                     }
              }
       }

該類中,有兩層for循環,分別以loop1,loop2進行標記,如 果break或者continue後沒有出現標記,表示控制的是最近的一層循環,即 loop2,如果出現標記,則控制的是標記名所表示的循環。break表示中斷循環, continue表示繼續循環。

該類運行結果如下:

i=1 j=0

i=2 j=0

i=2 j=1

i=3 j=0

i=3 j=1

i=3 j=2

通過學習運算符和流程控制,初學者可以很容易開始寫一些小程序,熟悉 Java語法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved