2018-05-10 第四天

一抓半、內(nèi)存分析(棧)

二、注釋:comment

注釋的作用:幫助開發(fā)人員更好的理解記憶程序的格嘁。


java 中支持三種注釋:

1:單行注釋 ?//后續(xù)的內(nèi)容都是注釋的內(nèi)容 ?可以單獨占用一行笛求,用來解釋說明它下面一行的代碼。 ?還可以放到一行代碼的末尾糕簿,短注釋探入。


2:多行注釋: /* 注釋的內(nèi)容 */

3:多行文檔注釋: 幫助生成閱讀文檔的。 ?javadoc.exe ?可以用來識別java 源代碼中的文檔注釋的內(nèi)容冶伞。將文檔注釋中的內(nèi)容生成一個幫助文檔新症。

/** ?文檔注釋的內(nèi)容 */


三、運算符

1:操作數(shù) ?參與運算符運算的數(shù)據(jù)响禽。

2:表達式 ?操作數(shù)使用運算符連接的整體徒爹。

3:一元運算符 :需要一個操作數(shù)的運算符。 ?單目運算符芋类。+1

4:二元運算符 :需要兩個操作數(shù)的運算符隆嗅。 ?1+1 1-1 ?雙目運算符

5:三元運算符 :需要三個操作數(shù)的運算符。 ?三目運算符 ?only one侯繁。

????????????????????????????條件運算符(判斷)?返回值1:返回值2;

6:返回值: 參與所有運算符運算的數(shù)據(jù) 都是 操作數(shù) ?或者表達式的返回值 參與的胖喳。

參與運算的數(shù)據(jù)計算的結(jié)果?就是?參與運算數(shù)據(jù)的返回值。


四贮竟、算術(shù)運算符?+ - * / %

//運算符練習(xí)

public class TestMath{

public static void main(String[] args){

//算術(shù)運算符

// 1 + ?: ?一元運算符(通常省略) ?和 ?二元 運算符 (實現(xiàn)兩個操作數(shù)相加)

//打印的是表達式 操作數(shù) 的 返回值丽焊。

System.out.println(+7);//7

System.out.println(1+7);//8

// 2: - : 一元 運算符 ?(負(fù)數(shù)) ??二元運算符 (實現(xiàn)兩個操作數(shù)相減)

System.out.println(-7);//-7

System.out.println(1-7);//-6

// 3 * : 二元運算符 ?(實現(xiàn)兩個操作數(shù)相乘的結(jié)果) ?正負(fù)號的結(jié)算的結(jié)果 和 數(shù)學(xué)中的規(guī)則一樣

System.out.println(1*2);//2

System.out.println(-1*2);//-2

System.out.println(1*-2);//-2

System.out.println(-1*-2);//2

//4 ?/ ?: 二元運算符 ?(實現(xiàn)兩個操作數(shù)相除的結(jié)果) 整數(shù)相除結(jié)果還是整數(shù),余數(shù)忽略咕别。有一個操作數(shù)是小數(shù)技健,結(jié)果就是小數(shù)。

// 正負(fù)號的規(guī)則和數(shù)學(xué)中一樣惰拱。

System.out.println(5/3);//1

System.out.println(5.0/3);//1.666666666666666667

System.out.println();

// 5 % ?取余: 二元運算符 ( a%b a 除以b 得到的余數(shù))

System.out.println(5%3);//2

System.out.println(1%3);//1

//規(guī)則:結(jié)果的符號位 與 左邊的操作數(shù)相同

System.out.println(5%3);//2

System.out.println(-5%3);//-2

System.out.println(5%-3);//2

System.out.println(-5%-3);//-2

//除 和 ?取余 的應(yīng)用技巧

//比如我得到一個三位的隨機數(shù)雌贱,求三位隨機數(shù)的個位 ?十位 ?百位 上的具體的數(shù)值大小。 345

final int MIN = 100;

final int MAX = 1000;

int num = (int)(Math.random() * (MAX-MIN) + MIN);

System.out.println("num = " + num);

//個位的值

int unit = num % 10;

//十位的值

int decade = num /10 % 10;

//百位

int hundred = num/100;

System.out.println(num + " 的百位是:" + hundred + "\t十位是:" + decade + "\t個位是:" + unit);


}

}


五偿短、自增欣孤、自減

????//運算符練習(xí)-2

public class TestMath1{

public static void main(String[] args){

// ++ ?自增運算符 :一元運算符。對變量自身實現(xiàn)自增一的操作昔逗。

int age = 10;

//賦值操作最后執(zhí)行降传。

age = age + 1;

//后綴模式 postfix

//自增后綴模式的表達式的返回值 是 變量自增之前的值。

//先返回勾怒,后自增搬瑰。

age ++;

age = 0;

//后綴模式款票,首先 age ++ 產(chǎn)生返回值 返回 age 自增之前的值 num 。 然后age 做自增+1操作泽论,然后將num 賦值給 value。

System.out.println(age ++);

int value = age ++;

System.out.println("age = " + age);

System.out.println("value = " + value);

age = 0;

value = age ++ + age ++ ?+ age ++;

System.out.println("value = " + value);

//前綴模式 prefix

//先自增卡乾,后返回翼悴。

++ age;

age = 0;

System.out.println("age = " + ++age);

age = 0;

age = age ++;

System.out.println("age = " + age);

age = 0;

value = 0;

value = ++age + age ++ + age ++ + ++age;

System.out.println("age = " + age);//4

System.out.println("value = " + value);//8

// -- 自減運算符 ,實現(xiàn) 對變量自身自減一的操作幔妨。

// 前綴模式鹦赎,先自減,后返回误堡。

// 后綴模式古话,先返回,后自減锁施。

}

}



六陪踩、賦值運算符

賦值運算符:=

二元運算符。

功能:將右邊表達式的返回值賦值給左邊的?變量或者是終態(tài)變量悉抵。


注意:賦值語句也有返回值:左邊變量被賦予的值肩狂。


賦值運算符左邊的:左值,右邊的叫:右值姥饰。


左值:變量或者是終態(tài)變量傻谁。

右值:常量(1)、變量(age)列粪、常量表達式(1+1).變量表達式(age + value).,常量變量表達式(1+age)审磁。


注意:

賦值運算符?最后執(zhí)行。

左值的類型和右值的類型需要兼容岂座。


復(fù)合賦值運算符:?+=态蒂、-=、*=掺逼、/=吃媒、%=、&=吕喘、|=赘那、^=、&&=氯质、||=

復(fù)合賦值運算符?和?普通的賦值方式的區(qū)別:

1:復(fù)合賦值運算符 生成的字節(jié)碼要小一點點募舟。省一點點內(nèi)存。

2:byte value = value + 1;(錯)

??byte value = (byte)value + 1;(對)

??byte value = 1;value ++;(對)


//復(fù)合賦值運算符

public class Test1{

public static void main(String[] args){

//對指定的變量實現(xiàn)自增一的操作闻察。

int age = 10;

age = age + 1;

age ++;

++ age;

age += 1;

//自增10

//age = age + 10;

age += 10;

//自減10

//age = age - 10;

age -= 10;

//自乘10

//age = age * 10;

age *= 10;

//自除10

age /= 10;

//age = age/10;

//自余10

//age = age%10;

age %= 10;

}

}



七拱礁、關(guān)系運算符

關(guān)系運算符:關(guān)系運算符一共有6個琢锋。


都是二元運算符。用來表示運算符左右量變的關(guān)系是否成立的呢灶!

如果關(guān)系成立吴超,關(guān)系表達式的返回值?是true。否則 是false鸯乃。


>:大于鲸阻,左邊是否大于右邊

<:小于,左邊是否小于右邊

>=:大于等于缨睡,左邊是否大于等于右邊

<=:小于等于鸟悴,左邊是否小于等于右邊

==:等于,左邊是否等于右邊

!=:不等于奖年,左邊是否不等于右邊细诸。



6種數(shù)值類型的數(shù)據(jù)都可以進行 關(guān)系的比較。 byte short int long float double


char 可以被看作整數(shù)對待陋守,所以也可以進行所有關(guān)系的比較震贵。


布爾類型:只適用于比較是否相等(==、!=)嗅义。不能用于比較大小屏歹。


//關(guān)系運算符

public class TestReleation{

public static void main(String[] args){

System.out.println(5 > 6);//false

boolean bool = 5 != 6;//

System.out.println(bool);//true

System.out.println('a'-32 == 'A');

System.out.println('你'+0);

char c1 = 20320;

System.out.println(c1);

int age = 0;

System.out.println( age ++ > age);//false

System.out.println( age ++ < age);//true

System.out.println( age ++ == age);//false

System.out.println( age ++ != age);//true

age = 0;

System.out.println( ++ age != (age += 1));//true

}

}

?

八、邏輯運算符

邏輯運算符:6個之碗。


& : 邏輯與

| : 邏輯或

^ : ?邏輯異或

! : ?邏輯非蝙眶,邏輯取反。


&&:條件與褪那、短路與

||:條件或幽纷、短路或


注意:參與邏輯運算的操作數(shù)?必須是?boolean值。 邏輯表達式的返回值也是 boolean 值博敬。

?

//邏輯運算符

public class TestLogic{

public static void main(String[] args){

// & ?邏輯與 ?二元的運算符友浸。 規(guī)則:全真則真,有假則假偏窝。 表達的是并且的意思收恢。

System.out.println((2>1) & true);//true

System.out.println(true & false);//false

System.out.println(false & true);//false

System.out.println(false & false);//false

System.out.println();

// | 邏輯或 ?二元運算符 ?規(guī)則:有真則真,全假則假祭往。 ?表達的是或者的意思伦意。

System.out.println(true | true);//true

System.out.println(true | false);//true

System.out.println(false | true);//true

System.out.println(false | false);//false

System.out.println();

//^ 邏輯異或 ?二元運算符 ?規(guī)則:相異為 真true ?相同 為假false

System.out.println(true ^ true);//false

System.out.println(true ^ false);//true

System.out.println(false ^ true);//true

System.out.println(false ^ false);//false

System.out.println();

// ! 邏輯 非 一元運算符 ?規(guī)則:true 取反 返回 false,false 取反 返回 true

System.out.println(!true);//false

System.out.println(!false);//true

System.out.println();

// && 條件與 短路與 ??二元運算符 規(guī)則 ?全真則真硼补,有假則假驮肉。 表達的是并且的意思。

System.out.println((2>1) && true);//true

System.out.println(true && false);//false

System.out.println(false && true);//false

System.out.println(false && false);//false

System.out.println();

// & 和 && 的區(qū)別:參與邏輯與&運算的所有的操作數(shù)表達式已骇,都會被計算离钝,并得到結(jié)果票编。不管前面的操作數(shù)是否是false。

// && 條件與 如果第一個操作數(shù)的返回值是 false卵渴,那么后面的參與邏輯運算的表達式 將不再被計算慧域,而直接將整個邏輯表達式的返回值返回 false。

// && 效率往往高于 & 浪读。建議使用 && 吊趾。

int age = 0;

System.out.println((10 > 12) && (age ++ != 0));//false

System.out.println("age = " + age);

// | 和 || ?區(qū)別:

// | : 參與邏輯或 | 運算的所有的操作數(shù) ?都會被計算,即使前面的操作數(shù)已經(jīng)是 true了瑟啃。

// || 短路或 : 如果進行短路或 運算的操作數(shù),前面的操作數(shù) 的返回值 是 true揩尸,那么后面的表達式將不再被計算蛹屿,而直接返回整個表達式的值為true。

// 建議使用 || 短路或岩榆。 效率相對較高一點错负。

}

}


?

九、位運算符

位運算符:直接對底層的二進制位?做操作勇边,效率比其他的運算符要高犹撒。只對整數(shù)類型使用。


7個位運算符。

&: 按位與

|: 按位或

^: 按位異或

~:按位取反

>>:帶符號右移

<<: 左移

>>>:無符號右移



//位運算符練習(xí)

import java.util.Random;


public class TestRandom{

public static void main(String[] args){

// &: 按位與 ?二元運算符 ?規(guī)則:對應(yīng)的位上進行按位與 全1 則 1 ?有0則0.

System.out.println(3 & 5);//1

//應(yīng)用技巧:可以使用按位與 得到 指定的二進制位上的表示的數(shù)值的大小。將指定的二進制位設(shè)置為0. ?關(guān)燈

int age = 0b1010101;

System.out.println(age & 0xf);//5

System.out.println(age & 0b111);//5

// | : 按位或 ?二元運算符 ??規(guī)則: 對應(yīng)的位上進行按位或兆衅,逐样,有1則1,全0 則0

System.out.println(3 | 5);//7

//應(yīng)用技巧:1:如果兩個操作數(shù) 對應(yīng)的位上沒有全1 的情況炼列,那么按位或和加結(jié)果一樣。

System.out.println(1|2);//3

System.out.println(1|4);//5

System.out.println(4|2);//6

System.out.println(16|2);//18

System.out.println(7|16);//23

//找10個數(shù),任意的組合十個數(shù)的加的結(jié)果刃跛。都是不同的。

//技巧2 :將指定位 設(shè)置為 1. ?開燈


// ^: 按位異或 ?二元運算符 ?規(guī)則:相同為 0 苛萎,相異為1. ?桨昙。一個數(shù)值,先后異或了一個值2次腌歉,那么結(jié)果是它自身蛙酪。

System.out.println(3 ^ 5 ^5);//3

//應(yīng)用技巧:1 不需要中間變量交換兩個變量的值

int num1 = 15;

int num2 = 6;

num1 ^= num2; ??//num1 = num1 ^ num2;

num2 ^= num1;//num2 = num2 ^ num1;

num1 ^= num2;//num1 = num1 ^ num2;

System.out.println(num1 + "\t" + num2);

//2 可以實現(xiàn)加密效果 ?

//明文 ?密文 ?密鑰

char c1 = '我';

char c2 = '愛';

char c3 = '你';

//密鑰

int key = 5210;

System.out.println("密文:"+(char)(c1^key)+(char)(c2^key)+(char)(c3^key));

System.out.println("解密:"+(char)(c1^key^key)+(char)(c2^key^key)+(char)(c3^key^key));

// ~:按位取反 ?規(guī)則:所有的二進制位 0變1 ?1 變0

System.out.println(~0);//-1

//移位 必須是整數(shù)類型 byte ,short char int long

//如果是小于等于int 類型的數(shù)據(jù)究履。移動n位滤否,如果n 大于等于32 等價于 移動 n%32位 ???a >> n%32

// >>:帶符號右移 ?二元運算符 ?規(guī)則:低位被擠走,高位補符號位最仑,正數(shù)補0 ?負(fù)數(shù) 補 1.

//應(yīng)用:在某些區(qū)間內(nèi)藐俺,如果想對某個數(shù)實現(xiàn)除以 2的n 次冪 可以通過對該數(shù)進行帶符號右移n 位來實現(xiàn)炊甲。

System.out.println(24 >> 3);// 24/2^3=3

System.out.println(16 >> 5);// 16/2^5=0

System.out.println(-16 >> 5);// -1

System.out.println(-16 >> 2);//-4

// <<: 左移 ?二元運算符 ?規(guī)則:高位被擠走,低位補0

// 應(yīng)用:在int 區(qū)間內(nèi) 左移n 位 和 乘以2的n次冪等價欲芹。

System.out.println(3 << 2);// 3*2^2=12

System.out.println(5 << 32);// 5 * 2^(32-32) = 5

// >>>:無符號右移 ?二元運算符卿啡,規(guī)則:低位被擠走,高位補0.

//應(yīng)用:得到一個正整數(shù)菱父。

//得到區(qū)間[10~30]之間的一個隨機數(shù)颈娜。

//創(chuàng)建得到隨機數(shù)的對象

System.out.println( -16 >>> 3);

Random random = new Random();

final int MIN = 10;

final int MAX = 31;

//得到一個隨機的int 值。

int num = random.nextInt();

System.out.println(num);

//得到了一個正整數(shù)

//num = num >>> 1;

num >>>= 1;

System.out.println(num);

num = num % (MAX-MIN) +MIN;

System.out.println(num);

//一句代碼實現(xiàn)

int value = (random.nextInt()>>>1)% (MAX-MIN) +MIN;

System.out.println(value);

}

}



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末浙宜,一起剝皮案震驚了整個濱河市官辽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粟瞬,老刑警劉巖同仆,帶你破解...
    沈念sama閱讀 223,207評論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異裙品,居然都是意外死亡俗批,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評論 3 400
  • 文/潘曉璐 我一進店門市怎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岁忘,“玉大人,你說我怎么就攤上這事区匠「上瘢” “怎么了?”我有些...
    開封第一講書人閱讀 170,031評論 0 366
  • 文/不壞的土叔 我叫張陵辱志,是天一觀的道長蝠筑。 經(jīng)常有香客問我,道長揩懒,這世上最難降的妖魔是什么什乙? 我笑而不...
    開封第一講書人閱讀 60,334評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮已球,結(jié)果婚禮上臣镣,老公的妹妹穿的比我還像新娘。我一直安慰自己智亮,他們只是感情好忆某,可當(dāng)我...
    茶點故事閱讀 69,322評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阔蛉,像睡著了一般弃舒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,895評論 1 314
  • 那天聋呢,我揣著相機與錄音苗踪,去河邊找鬼。 笑死削锰,一個胖子當(dāng)著我的面吹牛通铲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播器贩,決...
    沈念sama閱讀 41,300評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼颅夺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蛹稍?” 一聲冷哼從身側(cè)響起吧黄,我...
    開封第一講書人閱讀 40,264評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唆姐,沒想到半個月后稚字,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,784評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡厦酬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,870評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘫想。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仗阅。...
    茶點故事閱讀 40,989評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖国夜,靈堂內(nèi)的尸體忽然破棺而出减噪,到底是詐尸還是另有隱情,我是刑警寧澤车吹,帶...
    沈念sama閱讀 36,649評論 5 351
  • 正文 年R本政府宣布筹裕,位于F島的核電站,受9級特大地震影響窄驹,放射性物質(zhì)發(fā)生泄漏朝卒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,331評論 3 336
  • 文/蒙蒙 一乐埠、第九天 我趴在偏房一處隱蔽的房頂上張望抗斤。 院中可真熱鬧,春花似錦丈咐、人聲如沸瑞眼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伤疙。三九已至,卻和暖如春辆影,著一層夾襖步出監(jiān)牢的瞬間徒像,已是汗流浹背黍特。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厨姚,地道東北人衅澈。 一個月前我還...
    沈念sama閱讀 49,452評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像谬墙,于是被迫代替她去往敵國和親今布。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,995評論 2 361

推薦閱讀更多精彩內(nèi)容