在最底層,java中的數(shù)據(jù)是通過(guò)使用操作符來(lái)操作的
3.1更簡(jiǎn)單的打印語(yǔ)句
這篇簡(jiǎn)單介紹了下靜態(tài)導(dǎo)入的概念
import static net.mindView.util.Print.*
import+static
3.12 使用java操作符
幾乎所有的操作符都只能操作“基本類型” ? = ? ? == ?马昨!= 可以操作所有對(duì)象 ? ? String類支持 + ? +=
3.13 優(yōu)先級(jí)
先乘除后加減 ?要經(jīng)常使用 () ? 來(lái)表明優(yōu)先級(jí)
String類型 + ?非String類型 ? ? 但編譯器看到后 會(huì)強(qiáng)制將非String轉(zhuǎn)化為String類型
3.14 賦值
= ? ?表示 將右邊的值帕翻,把他賦值給左邊
對(duì)于基本數(shù)據(jù)類型 a = b ?那么b的內(nèi)容就復(fù)制給a了 ? ? 如果修改a ?b 并不受影響
但是對(duì)于對(duì)象賦值來(lái)說(shuō) ?是將 b引用復(fù)制給 a ? ? a 與 b 同時(shí)指向 同一個(gè)堆內(nèi)的對(duì)象 ?對(duì)a b 操作會(huì)相互影響
3.4.1 二進(jìn)制算法 ?
3.14.2 ?按位運(yùn)算?
1.^(亦或運(yùn)算) 糊肠,針對(duì)二進(jìn)制皆看,相同的為0龙誊,不同的為1
2 ?---> 0010
3 ?----> 0011
結(jié)果--->0001 ? ? --->1
2.&(與運(yùn)算)?針對(duì)二進(jìn)制韭寸,只要有一個(gè)為0,就為0
2 ?---> 0010
3 ?----> 0011
結(jié)果--->0010 ? ?----> 2
3.~(非運(yùn)算) ? 針對(duì)二進(jìn)制 ?一元運(yùn)算符 0轉(zhuǎn)1 ?1轉(zhuǎn)0
2 ?---> 0010
~ ?
結(jié)果--->1101 ? 具體多少位 要看 os 系統(tǒng)是多少位的 32 位 ? 2 為 0000 0000 0000 0010
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?取反為 1111 ?1111 ?1111 ?1101
3.14.3 ?移位操作符 ? ?移位方向看箭頭
1.<<(向左位移) ??針對(duì)二進(jìn)制荆隘,轉(zhuǎn)換成二進(jìn)制后向左移動(dòng)n位恩伺,后面用0補(bǔ)齊?
2 ?---> 0010 ? ? ? 2<<3 ? 2向左移動(dòng)三位(后面補(bǔ)三個(gè)0)
結(jié)果 ---> ? ?0010000 ? --->2^4 = 16
2.>>(向右位移)?針對(duì)二進(jìn)制,轉(zhuǎn)換成二進(jìn)制后向右移動(dòng)3位
2 --->0010 ? ? ? ? ?2>>3 ?2向右一定3位
結(jié)果-->0000 ? ? ? ? 結(jié)果為0
這里需要注意 ?>> ? 右移 是有符號(hào)移動(dòng) ?若為正數(shù) 需要在最高位補(bǔ)0 若為負(fù)數(shù)要在最高位補(bǔ)1
3.>>>(無(wú)符號(hào)右移) 移動(dòng)方式和 >> 一致 ?但是屬于無(wú)符右移椰拒,最高位不管正負(fù)都只在高位補(bǔ)0
注意:對(duì) char byte short 進(jìn)行移位處理 ?在移位進(jìn)行前晶渠,他們就轉(zhuǎn)化成int 類型了 ?
并以int類型的值返回結(jié)果凰荚。只有數(shù)值的低5五位才有用。這樣可以防止我們位移超過(guò)int類型的所有的位數(shù)
3.4.1 使用操作符時(shí)常犯的錯(cuò)
while(x=y){ // 除非 x 和 y 都是boolean 類型 否則不可能是正確的
}
3.15.1 類型轉(zhuǎn)化操作符
窄轉(zhuǎn)換:窄轉(zhuǎn)換是指 我們將精度高(數(shù)據(jù)的位數(shù)較高)的基本類型轉(zhuǎn)化為精準(zhǔn)度低的基本類型 這樣做會(huì)造成數(shù)據(jù)信息的丟失 所以java要求 進(jìn)行強(qiáng)制轉(zhuǎn)換(顯示轉(zhuǎn)換) ? ?int k = 5 ; ?short ?f = (short)k褒脯;//顯示?
擴(kuò)展轉(zhuǎn)換:擴(kuò)展轉(zhuǎn)換是指 我們將精度低(數(shù)據(jù)的位數(shù)較低)的基本類型轉(zhuǎn)化為精度較高的基本類型 這樣不會(huì)造成數(shù)據(jù)的丟失 所以可以使用隱式轉(zhuǎn)換 ? ? ?int k = 5 ; long f = k; ?//隱士
java允許我們將任何基本類型轉(zhuǎn)換成 別的基本數(shù)據(jù)類型 ?boolean 除外
3.15.2 截尾和舍入
folat double 轉(zhuǎn)為 int 類型時(shí) 常常會(huì)產(chǎn)生 截尾問(wèn)題 ? 即 ?4.5 --》4 ? ? 4.9---》4 ?
這是可以使用 Math.round() 方法
Math.round(4.6)---》 5
3.15.3 提升?
當(dāng)?shù)?? 精度數(shù)據(jù)類型 * 高精度數(shù)據(jù)類型 會(huì)自動(dòng)轉(zhuǎn)化為高精度數(shù)據(jù)類型
比如 5*0.1 ? = 0.5 ? int * float = float 類型
3.16 java沒(méi)有sizeof
c c++ 中 通過(guò) sizeof() 操作可以獲得 數(shù)據(jù)項(xiàng)被分配了多少字節(jié)數(shù)?
不同數(shù)據(jù)類型在不通機(jī)器上可能大小不一樣 比如32 位的計(jì)算機(jī) 比 16位的能夠保存更大的整數(shù)
所有移植對(duì)c c++程序猿頗為頭疼
java不需要這些 因?yàn)?所以基本數(shù)據(jù)類型的大小是固定的
并不全 有些地方進(jìn)行了省略