在最底層,Java中的數(shù)據(jù)是通過使用操作符來操作善玫。
3.1 簡單的打印語句
System.out.print("Rather a lot to type");
import java.util.*;
import static net.mindview.util.Print.*;
public class Hello{
public static void main(String[] args){
print("I Love ");
print(new Date());
}
}
3.2使用Java操作符
幾乎所有的操作符只能操作“基本類型水援。例外的操作符是 “=”、“==“和“!=”茅郎,這些操作符能操作所有對象(這也是對象易令人糊涂的地方)蜗元,除此之外,String類支持“+” 和 “+=”系冗。
3.3優(yōu)先級
當(dāng)一個表達是存在多個操作是许帐,操作符的優(yōu)先級決定了各個部分的計算順序。最簡單的規(guī)則先乘除后加減...
3.4賦值
"=" :“取右邊的值把它復(fù)制給左邊”毕谴。
基本數(shù)據(jù)類型賦值是簡單的成畦,基本類型存儲了實際的數(shù)值,而并非指向一個對象的引用涝开,所以為其賦值的時候循帐,是直接將一個地方的內(nèi)容復(fù)制到另一個地方。但是在為對象“賦值”的時候舀武,情況卻發(fā)生了變化拄养。對一個對象進行操作時,我們操作的是對象的引用。所以倘若“將一個對象賦值類另外一個對象”瘪匿,實際是將“引用”從一個地方賦值到另一個地方跛梗。這意味著假若對對像使用c=d,那么都指向原本只有d指向的那個對象。
3.5 算數(shù)操作符(+棋弥,-核偿,*,%顽染,/)
整數(shù)除法會直接去掉結(jié)果的小數(shù)位漾岳,而不是四舍五入的結(jié)果。
3.6自動遞增和遞減(++粉寞,--)
++a (a =a +1)
前綴遞增或遞減 先算 后值
后綴遞增或遞減 先值 后算
3.7關(guān)系操作符(>,<,==尼荆,>=,<=,!=)
關(guān)系操作符生成的是一個boolean結(jié)果。它們計算的是操作數(shù)值之間的關(guān)系唧垦。
3.8邏輯操作符(&&捅儒,||,U窳痢)
只能應(yīng)用于boolean值巧还。
短路現(xiàn)象,一旦能夠準(zhǔn)確無誤的確定這個表達式的值双炕,就不再計算表達式余下的部分。
3.9直接常量
L(long)
F(float)
D(double)
0x十六進制
0 八進制
3.10 按位移位操作符
左移( << )撮抓、右移( >> ) 妇斤、無符號右移( >>> ) 、位與( & ) 丹拯、位或( | )站超、位非( ~ )、位異或( ^ )乖酬,除了位非( ~ )是一元操作符外死相,其它的都是二元操作符。
移位運算符操作的運算對象也是二進制的“位”咬像。移位操作符只可能處理整數(shù)類型(基本類型中的一種)左移位操作符(<<)能按照操作符右側(cè)指定的位將操作符左邊的操作數(shù)向左移動(在低補0)算撮。有符號 右移操作符(>>)按照操作符 右側(cè)指定的位數(shù)將操作符左邊的操作數(shù)向右移動。"有符號”向右移位操作符使用“符號擴展”若符號為正县昂,則在高位插入0肮柜;若符號為負(fù),則在高位插入1倒彰。Java中增加了一種“無符號”右移操作符(>>>)审洞,它使用“零擴展”:無論正負(fù),都在高位插入0.這一操作符是C或C++中沒有的待讳。
如果對char芒澜、byte仰剿、short類型的數(shù)值進行移位處理,那么在移位進行之前痴晦,它們會被轉(zhuǎn)換為int類型南吮,并且得到的結(jié)果也是一個int類型的值。
"移位”可與等號組合使用(<<= or >>=)
3.11 三元操作符
boolean-exp ? value0 : value1
3.12 Java沒有sizeof
Java不需要sizeof()操作符阅酪,因為所有數(shù)據(jù)類型在所有的機器中的大小都是相同的旨袒。我們不必考慮一直問題--它已經(jīng)被設(shè)計在了語言中。
3.13 操作符小結(jié)
當(dāng)類型轉(zhuǎn)換成一種較小的類型時术辐,必須留意“窄化轉(zhuǎn)換”的結(jié)果砚尽;否則會在類型轉(zhuǎn)化過程中不知不覺的丟失信息;