2019-3-8 java基礎篇第二天

今日目標

1.理解基本的數(shù)據(jù)類型之間的轉化
2.了解常用運算符
3.掌握java中的方法概念,以及使用
4.了解基本的流程控制語言损合。

1. 數(shù)據(jù)類型

Java程序中要求參與的計算的數(shù)據(jù)毁嗦,必須要保證數(shù)據(jù)類型的一致性亲茅,如果數(shù)據(jù)類型不一致將發(fā)生類型的轉換


圖片.png

1.1自動轉換

一個 int 類型變量和一個 byte 類型變量進行加法運算,運算結果狗准,變量的類型將是 int 類型克锣,這就是出現(xiàn)了數(shù)據(jù)類型的自動類型轉換現(xiàn)象。
自動轉換:將取值范圍小的類型 自動提升為 取值范圍大的類型 腔长。
從上圖中的位數(shù)我們看到袭祟,int的位數(shù)大于byte,因此最終的結果會轉換為int

public static void main(String[] args) {
    int i = 1;
    byte b = 2;// byte x = b + i; // 報錯//int類型和byte類型運算捞附,結果是int類型 
    int j = b + i;
    System.out.println(j);
轉換原理圖如下

byte 類型內存占有1個字節(jié)(8位)巾乳,在和 int 類型運算時會提升為 int 類型 您没,自動補充3個字節(jié)(3*8位),因此計算后的結果還是 int 類
圖片.png

同理 當我們用int和double變量進行運算的時候胆绊,最終得到的必然會是double類型

轉換規(guī)則:

前面提過其規(guī)則是范圍小的類型向范圍大的類型提升氨鹏, byte、short辑舷、char 運算時直接提升為 int喻犁。8大基本類型的總體規(guī)則如下

byte、short何缓、char‐‐>int‐‐>long‐‐>float‐‐>doub

在學習這里的時候不要死記肢础,記住他們的大小關系既可。

1.2 強制轉換

現(xiàn)在知道了小類型可以自動的轉化為大的類型碌廓,那么反過來呢传轰。將一個小數(shù)賦值給int,我們將會看到編譯失敗谷婆。
其主要原因就是double 類型內存8個字節(jié)慨蛙, int 類型內存4個字節(jié)。 1.5 是 double 類型纪挎,取值范圍大于 int 期贫。可以理解為 double 是8升的水壺异袄, int 是4升的水壺通砍,不能把大水壺中的水直接放進小水壺。此時我們就要用到強制轉化類型
轉換格式:

數(shù)據(jù)類型 變量名 = (數(shù)據(jù)類型)被轉數(shù)據(jù)值烤蜕;
將 1.5 賦值到 int 類型封孙,
代碼修改為:

// double類型數(shù)據(jù)強制轉成int類型,直接去掉小數(shù)點讽营。
int i = (int)1.

同理虎忌,當一個 short 類型與 1 相加,我們知道會類型提升橱鹏,但是還想給結果賦值給short類型變量膜蠢,就需要強制轉換。

public static void main(String[] args) {
//short類型變量蚀瘸,內存中2個字節(jié)
short s = 1;
/*出現(xiàn)編譯失敗s和1做運算的時候狡蝶,1是int類型,s會被提升為int類型s+1后的結果是int類型贮勃,將結果在賦值會short類型時發(fā)生錯誤short內存2個字節(jié),int類型4個字節(jié)必須將int強制轉成short才能完成賦
*/
    s = s + 1苏章;//編譯失敗
    s = (short)(s+1);//編譯成功

轉換原理圖


圖片.png

需要注意的是:

  • 浮點轉成整數(shù)寂嘉,直接取消小數(shù)點奏瞬,可能造成數(shù)據(jù)損失精度。
  • int 強制轉成 short 砍掉2個字節(jié)泉孩,可能造成數(shù)據(jù)硼端。

1.3AscII編碼

在計算機的內部都是二進制的0、1數(shù)據(jù)寓搬,如何讓計算機可以直接識別人類文字的問題呢?就產(chǎn)生出了編碼表的概念。
編碼表 :就是將人類的文字和一個十進制數(shù)進行對應起來組成一張表.


圖片.png

2 運算符

2.1算數(shù)運算符

圖片.png

前面的加減乘除都比較簡單至耻,我們來看最后的自增和自減
++ 運算渔期,變量自己增長1。反之唾琼, -- 運算兄春,變量自己減少1,用法與 ++ 一致锡溯。
獨立運算:變量在獨立運算時赶舆, 前++ 和 后++ 沒有區(qū)別 。變量 前++ :例如 ++i 祭饭。變量 后++ :例如 i++
混合運算:和其他變量放在一起芜茵, 前++ 和 后++ 就產(chǎn)生了不同。
變量 前++ :變量a自己加1倡蝙,將加1后的結果賦值給b九串,也就是說a先計算。a和b的結果都是2

b=++a;

變量 后++ :變量a先把自己的值1悠咱,賦值給變量b蒸辆,此時變量b的值就是1,變量a自己再加1析既。a的結果是2躬贡,b的結果是1

b=a++;

2.2 賦值運算符

圖片.png

因為這些比較簡單就不做過多解釋

2.3 比較運算符

圖片.png

兩個數(shù)據(jù)之間做比較,返回值為booblean值

2.4 邏輯運算符

圖片.png

2.5 三元運算符

三元運算符格式:
數(shù)據(jù)類型 變量名 = 布爾類型表達式眼坏?結果1:結果2
三元運算符計算方式:
布爾類型表達式結果是true拂玻,三元運算符整體結果為結果1,賦值給變量宰译。
布爾類型表達式結果是false檐蚜,三元運算符整體結果為結果2,賦值給變結果2

3.方法

  • 方法:就是將一個功能抽取出來沿侈,把代碼單獨定義在一個大括號內闯第,形成一個單獨的功能
    定義格式:
    修飾符 返回值類型 方法名 (參數(shù)列表){
    代碼...return;
    }
    定義格式解釋:
  • 修飾符: 目前固定寫法 public static 缀拭。
  • 返回值類型: 目前固定寫法 void 咳短,其他返回值類型在后面的課程講解
  • 方法名:為我們定義的方法起名填帽,滿足標識符的規(guī)范,用來調用方法咙好。
  • 參數(shù)列表: 目前無參數(shù)篡腌, 帶有參數(shù)的方法在后面的課程講解。
  • return:方法結束勾效。因為返回值類型是void嘹悼,方法大括號內的return可以不寫。有返回值時必須寫返回值层宫。

3.1方法的調用

如果在main方法中調用杨伙,可以直接寫方法名字。

public static void main(String[] args) {
    //調用定義的方法
   method();
}
//定義方法卒密,被main方法調用
public static void method() {
    System.out.println("自己定義的方法缀台,需要被main調用運行")
}
注意事項:
  • 方法必須定義在一類中
  • 方法外方法不能定義在另一個方法的

4.流程控制

一個代碼的執(zhí)行時按照相應的順序,我們在編寫代碼的時候必然需要控制相關代碼的順序來完成我們的邏輯哮奇。

4.1順序執(zhí)行膛腐。

所謂順序執(zhí)行就是根據(jù)代碼所寫一行一行從上到下執(zhí)行,不會有翻轉到前面執(zhí)行的情況鼎俘。

public static void main(String[] args){
//順序執(zhí)行哲身,根據(jù)編寫的順序,從上到下運行
    System.out.println(1);
    System.out.println(2);
    System.out.println(3);
}

4.2判斷語句

  • if語句
  第一種格式: 
    if(關系表達式){
        語句體
    }
執(zhí)行流程:
  • 首先判斷關系表達式看其結果是true還是false
  • 如果是true就執(zhí)行語句體
  • 如果是false就不執(zhí)行語


    圖片.png
public static void main(String[] args){
    System.out.println("開始");
    // 定義兩個變量
    int a = 10;
    int b = 20;//變量使用if判斷
    if (a == b){
    System.out.println("a等于b");
    }
    int c = 10;
    if(a == c){
    System.out.println("a等于c");
    }
    System.out.println("結束")
  • if...else
    if(關系表達式) {
      語句體1;
      }else {
      語句體2
    }
執(zhí)行流程:
  • 首先判斷關系表達式看其結果是true還是false
  • 如果是true就執(zhí)行語句體1
  • 如果是false就執(zhí)行語句2


    圖片.png
  • if..else if...else
if (判斷條件1) {
執(zhí)行語句1;
} else if (判斷條件2) {
執(zhí)行語句2;
}
...
}else if (判斷條件n) {
執(zhí)行語句n;
} else {
執(zhí)行語句n+1;
}
執(zhí)行流程:
  • 首先判斷關系表達式1看其結果是true還是false
  • 如果是true就執(zhí)行語句體1
  • 如果是false就繼續(xù)判斷關系表達式2看其結果是true還是false
  • 如果是true就執(zhí)行語句體2
  • 如果是false就繼續(xù)判斷關系表達式…看其結果是true還是false…
  • 如果沒有任何關系表達式為true贸伐,就執(zhí)行語句體n+1


    圖片.png

4.3 選擇語句switch

格式:

switch(表達式) {
case 常量值1:語句體1;break;
case 常量值2:語句體2;break;
                ...
default:語句體n+1;break
執(zhí)行流程:
  • 首先計算出表達式的值
  • 其次勘天,和case依次比較,一旦有對應的值捉邢,就會執(zhí)行相應的語句脯丝,在執(zhí)行的過程中,遇到break就會結束伏伐。
  • 最后宠进,如果所有的case都和表達式的值不匹配,就會執(zhí)行default語句體部分藐翎,然后程序結束材蹬。
注意:一定要有break語句,要不然會進入后不出來的吝镣,程序只會遇到break才會停止case堤器。在switch語句中,如果case的后面不寫break末贾,將出現(xiàn)穿透現(xiàn)象闸溃,也就是不會在判斷下一個case的值,直接向后運行,直到遇到break圈暗,或者運行完整體switch結束掂为。
圖片.png
switch語句中裕膀,表達式的數(shù)據(jù)類型员串,可以是byte,short昼扛,int寸齐,char,enum(枚舉)抄谐,JDK7后可以接收字符

4.4循環(huán)語句for渺鹦,while,do---while

  • for循環(huán)語句格式
for(初始化表達式①; 布爾表達式②; 步進表達式④){
              循環(huán)體
}
執(zhí)行流程:
  • 執(zhí)行順序:①②③④>②③④>②③④…②不滿足為止蛹含。
  • ①負責完成循環(huán)變量初始化
    -②負責判斷是否滿足循環(huán)條件毅厚,不滿足則跳出循環(huán)
    -③具體執(zhí)行的語句
    -④循環(huán)后,循環(huán)條件所涉及變量的變化


    圖片.png
  • while循環(huán)語句格式
初始化表達式①
while(布爾表達式②){
循環(huán)體③
步進表達式
}
執(zhí)行流程
  • 執(zhí)行順序:①②③④>②③④>②③④…②不滿足為止浦箱。
  • ①負責完成循環(huán)變量初始化吸耿。
  • ②負責判斷是否滿足循環(huán)條件,不滿足則跳出循環(huán)酷窥。
  • ③具體執(zhí)行的語句咽安。
  • ④循環(huán)后,循環(huán)變量的變化情況


    圖片.png
  • do...while循環(huán)
初始化表達式①
do{
循環(huán)體③
步進表達式④
}while(布爾表達式②)

#######執(zhí)行流程

  • 執(zhí)行順序:①③④>②③④>②③④…②不滿足為止蓬推。

  • ①負責完成循環(huán)變量初始化妆棒。

  • ②負責判斷是否滿足循環(huán)條件,不滿足則跳出循環(huán)沸伏。

  • ③具體執(zhí)行的語句
    -④循環(huán)后糕珊,循環(huán)變量的變化


    圖片.png
  • for 和 while 的小區(qū)別:
    1.控制條件語句所控制的那個變量,在for循環(huán)結束后毅糟,就不能再被訪問到 了红选,而while循環(huán)結束還可以繼續(xù)使用,如果你想繼續(xù)使用留特,就用while纠脾,否則推薦使用for。原因是for循環(huán)結束蜕青,該變量就從內存中消失苟蹈,能夠提高內存的使用效率。
    2.在已知循環(huán)次數(shù)的時候使用推薦使用for右核,循環(huán)次數(shù)未知的時推薦使用while
    兩種跳出循環(huán)的方式:

  • break
    使用場景:
    主要用于終止switch或者循環(huán)

  • 在選擇結構switch語句中

  • 在循環(huán)語句中

  • 離開使用場景的存在沒有意義

  • continue
    使用場景:
    結束本次循環(huán)慧脱,繼續(xù)下一次的,多用在for循環(huán)

注意:一定要在循環(huán)的時候設置出口贺喝,否則會死循環(huán)菱鸥,例如你在while(true)這樣永遠無法跳出while循環(huán)

4.5嵌套調用

簡單總結就是for循環(huán)里面還有一個for循環(huán)宗兼。

  • 嵌套循環(huán)格式
for(初始化表達式①; 循環(huán)條件②; 步進表達式⑦) {
      for(初始化表達式③; 循環(huán)條件④; 步進表達式⑥) {
            執(zhí)行語句⑤;
      }
}
  • 嵌套循環(huán)執(zhí)行流程:
  • 執(zhí)行順序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
  • 外循環(huán)一次,內循環(huán)多次氮采。

打印5*8的矩形

public static void main(String[] args) {
//5*8的矩形殷绍,打印5行*號,每行8個//外循環(huán)5次鹊漠,內循環(huán)8次
for(int i = 0; i < 5; i++){
    for(int j = 0; j < 8; j++){
      //不換行打印星號
      System.out.print("*");
    }
//內循環(huán)打印8個星號后主到,需要一次換行
    System.out.println();
  }  
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市躯概,隨后出現(xiàn)的幾起案子登钥,更是在濱河造成了極大的恐慌,老刑警劉巖娶靡,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牧牢,死亡現(xiàn)場離奇詭異,居然都是意外死亡姿锭,警方通過查閱死者的電腦和手機塔鳍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艾凯,“玉大人献幔,你說我怎么就攤上這事≈菏” “怎么了蜡感?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長恃泪。 經(jīng)常有香客問我郑兴,道長,這世上最難降的妖魔是什么贝乎? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任情连,我火速辦了婚禮,結果婚禮上览效,老公的妹妹穿的比我還像新娘却舀。我一直安慰自己,他們只是感情好锤灿,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布挽拔。 她就那樣靜靜地躺著,像睡著了一般但校。 火紅的嫁衣襯著肌膚如雪螃诅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音术裸,去河邊找鬼倘是。 笑死,一個胖子當著我的面吹牛袭艺,可吹牛的內容都是我干的搀崭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼匹表,長吁一口氣:“原來是場噩夢啊……” “哼门坷!你這毒婦竟也來了?” 一聲冷哼從身側響起袍镀,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冻晤,沒想到半個月后苇羡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡鼻弧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年设江,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片攘轩。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡叉存,死狀恐怖,靈堂內的尸體忽然破棺而出度帮,到底是詐尸還是另有隱情歼捏,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布笨篷,位于F島的核電站瞳秽,受9級特大地震影響,放射性物質發(fā)生泄漏率翅。R本人自食惡果不足惜练俐,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冕臭。 院中可真熱鬧腺晾,春花似錦、人聲如沸辜贵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽念颈。三九已至泉粉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嗡靡。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工跺撼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人讨彼。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓歉井,卻偏偏與公主長得像,于是被迫代替她去往敵國和親哈误。 傳聞我的和親對象是個殘疾皇子哩至,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,815評論 1 10
  • 一、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 5,823評論 2 16
  • 基礎 .NET概述 參考:http://www.cnblogs.com/yplong/p/3279934.html...
    donite閱讀 1,623評論 0 8
  • 還有半個小時就是雙十一了蜜自,今天又是頹廢的一天菩貌,不知道干了什么,一天就過去了重荠。 不知道寫什么箭阶,突然覺得寫一百字也是一...
    柒爺啊喲喂閱讀 175評論 0 0
  • 一切都很安靜,一切都很平淡戈鲁,一切都很坦然仇参。這么多年,我從未如此踏實和幸福婆殿。
    身披戰(zhàn)衣的淑女閱讀 224評論 0 0