《java編程思想》學習筆記—操做符

3.1更簡單的打印語句

3.2使用java操做符

一、幾乎全部的操做符都只能操做「基本類型」。例外的操做符是「=」,「==」,「!=」,這些操做符能操做全部的對象,除此以外,String類支持「+」和「+=」。java

3.3優先級

一、最簡單的規則是先乘除,後加減dom

二、用括號明確規定計算順序性能

3.4賦值「=」

一、右值能夠是任何常數,變量或者表達式(只要它能生成一個值就行)。但左值必須是一個明確的、已命名的變量。測試

二、別名現象大數據

class Tank{
 int level;
}
public static void main (string[] args){
Tank t1 = new Tank();
Tank t2= new Tank();
t1.level = 9;
t2.level = 47;
print(t1.level);//9
print(t2.level);//47
t1=t2;
print(t1.level);//47
print(t2.level);//47
t1.level=27;
print(t1.level);//27
print(t2.level);//27
}

避免以上問題能夠用:t1.level =t2.level ;code

3.4.1 方法調用中的別名問題對象

將一個對象傳遞給方法時,也會產生別名問題:字符串

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';
    print("1: x.c: " + x.c);//x.c: a
    f(x);
    print("2: x.c: " + x.c);//x.c: z
  }
}

3.5算術操做符

一、整數除法直接去掉結果的小數位,而不是四捨五入的圓整結果。編譯器

二、(1)Random類的對象。若是在建立過程當中沒有傳遞任何參數,那麼java就會將當前時間做爲隨機數生成器的種子,並由此在程序每一次執行時都產生不一樣的輸出。隨機數生成器對於特定的種子值老是產生相同的隨機數序列。string

(2)經過Random類的對象,程序可生成許多不一樣類型的隨機數,可調用如下方法: nextInt(),nextFloat(),nextLong(),nextDouble()

3.5.1一元加、減操做符

一、一元加好惟一地做用僅僅是將較小類型的操做數提高爲int

3.6自動遞增和遞減

3.7關係操做符

3.7.1測試對象的等價性

一、必須使用全部對象都適用的特殊方法equals()方法比較兩個對象的實際內容是否相同。但這個方法不適用於「基本類型」,基本類型直接使用==和!=便可。 (1)

public class EqualsMethod {
  public static void main(String[] args) {
    Integer n1 = new Integer(47);
    Integer n2 = new Integer(47);
    System.out.println(n1.equals(n2));
  }
} 
/* Output:
true

(2)

class Value {
  int i;
}

public class EqualsMethod2 {
  public static void main(String[] args) {
    Value v1 = new Value();
    Value v2 = new Value();
    v1.i = v2.i = 100;
    System.out.println(v1.equals(v2));
  }
}
 /* Output:
false

(3)以上的結果是由於equals()默認的行爲是比較引用。因此除非在本身的新類覆蓋equals()方法,不然不可能表現出咱們但願的行爲。

3.8邏輯操做符

一、可將整數類型替換成布爾類型之外的其餘任何基本數據類型。

3.8.1短路

一、若是全部的邏輯表達式都有一部分沒必要計算,那將得到潛在的性能提高。

3.9直接常量

3.9.1指數計數法

編譯器一般會將指數做爲雙精度數處理。

3.10按位操做符

一、按位操做:因爲位是很是「小」的,因此按位操做符僅使用了一個字符。

二、&=,|=,|=都是合法的

三、按位操做符具備與邏輯操做符相同的效果,只是他們不會中途「短路」

3.11移位操做符

一、移位操做符只可用來處理整數類型。

3.12三元操做符if-else

3.13字符串操做符+和+=

3.14使用操做符時常犯的錯誤

3.15類型轉換操做符

3.15.1截尾和舍入

一、將float和double轉型爲轉型值時,老是對該數字執行截尾。若是想要獲得舍入的結果,就須要使用java.lang.Math中的round()方法。

3.15.2提高 一、表達式中出現的最大數據類型決定了表達式最終結果的數據類型。若是將一個float值與一個double值相乘,結果就是double。

3.16java沒有sizeof

一、由於全部數據類型在全部機器中的大小都是相通的。

3.17操做符小結

一、若是兩個夠大的int值執行乘法運算,結果就會溢出。

二、除boolean之外,任何一種基本類型均可以經過類型轉換變爲其餘基本類型。

相關文章
相關標籤/搜索