操作符筆記-第一天 – JAVA編程語言程序開發技術文章

在最底層,Java中的數據是通過使用操作符來操作的。

Java是建立在C++基礎之上的,所以C和C++程序員應該非常熟悉Java的大多數操作符。當然,Java也做瞭一些改進與簡化。

3.2 使用Java操作符

操作符接受一個或者多個參數,並生成一個新值。幾乎所有的操作符都隻能操作“基本類型”。例外的操作符是“=”,”==”,!=”,這寫操作符能操作所有的對象。除此之外,String類支持“+”,”+=”。

3.3 優先級

當一個i阿表達式中存在多個操作符時,操作符的優先級就決定瞭各部分的計算順序。最簡單的規則就是先乘除後加減。程序員經常會忘記某些優先規則,所以應該用括號明確規定計算順序。

 

Java代碼 
//: Precedence.java 
public class Precedenece { 
    public static void main(String[] args) { 
        int x = 1 , y = 2 , z = 3; 
        int a = x + y – 2 / 2 + z; 
        int b = x + ( y – 2 ) / ( 2 + z ); 
        System.out.println("a = "+a+"\tb = "+b); 
    } 

/* Output:
 * a = 5    b = 1
 *///:~ 
 
 
 
3.4 賦值
賦值使用操作符“=”。它的意思是取”右值“把它復制給”左值“。

”右值“可以是任何常數,變量或者表達式。
“左值”必須是一個明確的已命名的變量。
對基本數據類型的賦值是很簡單的。基本類型存儲瞭實際的數值,而並非指向一個對象的引用,所以在為其賦值的時候,是直接將一個地方的內容復制到另一個地方。

但是在為對象“賦值”的時候,情況卻發生瞭變化。“將一個對象賦值給另一個對象”,實際上是將“引用”從一個地方復制到另一個地方。這意味著假若對象使用 c=d 那麼c和d都指向原本隻有d指向的對象。

Java代碼 
//: Assignment.java 
// Assignment with objects is a bit tricky 
  
class Tank { 
    int level; 

  
public class Assignment { 
    public static void main(String[] args) { 
        Tank t1 = new Tank(); 
        Tank t2 = new Tank(); 
        t1.level = 9; 
        t2.level = 48; 
        System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level); 
        t1 = t2; 
        System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level); 
        t1.level = 27; 
        System.out.println("t1.level:"+t1.level+"\tt2.level:"+t2.level); 
    } 

/* Output:
 * t1.level:9   t2.level:48
 * t1.level:48  t2.level:48
 * t1.level:27  t2.level:27
 *///:~ 
 
這種特殊的現象通常稱作“別名現象”,是Java操作對象的一種基本方式。直接操作對象內的域可以保持連個對象彼此獨立,但是容易導致混亂。並且,違背瞭良好的面向對象車徐設計的原則。

3.4.1 方法調用中的別名問題

 

Java代碼 
//: PassObject.java 
// Passing objects to methods may not be what you're used to . 
  
class Letter { 
    char c; 

  
public class PassObject { 
    static void f (Letter y) { 
        y.c = 'z'; 
    } 
    public static void main(String[] args) { 
        Letter x = new Letter(); 
        x.c = 'a'; 
        System.out.println("1.\tx.c: "+x.c); 
        f(x); 
        System.out.println("2.\tx.c: "+x.c); 
    } 

/* Output;
 * 1.   x.c: a
 * 2.   x.c: z
 *///:~ 
 
在許多編程語言中,方法參數將復制一份其傳入參數的副本;但Java實際上隻是傳遞瞭一個引用針對對象的操作都是引用。

3.5 算術操作符

Java的算術操作符與其他大多數程序設計語言都是相同的。同時其也使用一種來自C和C++的簡化符號同時進行運算與賦值操作(x+=4)。

一元減號用於轉變數據的符號,而一元加號隻是為瞭與一元減號相對應,但是它唯一的作用僅僅是將較小類型的操作數提升為 int。

3.6 自動遞增和遞減

遞增(++)和遞減(–)運算是兩中相當不錯的快捷運算。這連個操作符各有兩種使用方式,通常稱為“前綴式”和“後綴式”。“前綴式“會先執行運算,再生成值;”後綴式“會先生成值,再執行運算。

Java代碼 
//: AutoInc.java 
// Demostrates the ++ and — operators. 
  
public class AutoInc { 
    public static void main(String[] args) { 
        int i = 1; 
        System.out.println("i   : "+i); 
        System.out.println("++i : "+(++i)); 
        System.out.println("i   : "+i); 
        System.out.println("i++ : "+(i++)); 
        System.out.println("i   : "+i); 
        System.out.println("–i : "+(–i)); 
        System.out.println("i   : "+i); 
        System.out.println("i– : "+(i–)); 
        System.out.println("i   : "+i); 
    } 

/* Output:
 * i   :1
 * ++i :2
 * i   :2
 * i++ :2
 * i   :3
 * –i :2
 * i   :2
 * i– :2
 * i   :1
 *///:~ 

作者“RoyAkon's FreeStyle”
 

發佈留言