Java基礎(chǔ)語法知識你真的都會嗎进副?

image

第一階段 JAVA基礎(chǔ)知識

第二章 Java基礎(chǔ)語法知識

在我們開始講解程序之前这揣,命名規(guī)范是我們不得不提的一個話題,雖說命名本應(yīng)該是自由的影斑,但是仍然有一定的“潛規(guī)則”给赞,通過你對命名的書寫,別人一眼就能看出你是不是一個“行家”矫户。我們先來看一下有哪些規(guī)則片迅。

A:包名: 全部小寫用.隔開 eg: com.ideal.www
B:類名接口: 類的首字母大寫。如果類名由若干個單詞組成皆辽,那么每個單詞首字母大寫柑蛇。
C: 方法變量名: 所有的方法名都應(yīng)該小寫字母開頭。如果方法名 含有若干個單詞驱闷,那么其后每個單詞首字母大寫醉旦。
D: 常量名: 全部大寫 用 _ 隔開
E:原文件名: 原文件名必須和類名相同 類名.java
F: 主方法入口 所有的Java 程序由public static void main(String []args)方法開始執(zhí)行。

我們暫時對于這些名詞還沒有什么概念草丧,但是對于我們前一篇所寫到的HelloWorld例程來說臣缀,我們就用到了 類名、主方法這兩點痹换。

image

HelloWorld 作為類名自然需要滿足首字母大寫征字,又由于HelloWorld由兩個單詞組成,所以兩個單詞首字母分別大寫娇豫。

2.1關(guān)鍵字

(1)被Java語言賦予特定含義的單詞匙姜,他們有著特定的使用位置和方式

(2)特點:

全部小寫。

(3)注意事項:

A:goto和const作為保留字存在冯痢。

B:類似于Notepad++氮昧、sublime等編輯器對關(guān)鍵字有特殊顏色標記

(這是兩款和好用的編輯器,可以簡單的理解為可以使代碼帶著好看色彩的高級記事本)

類別 關(guān)鍵字 說明
訪問控制 private 私有的
protected 受保護的
public 公共的
類浦楣、方法和變量修飾符 abstract 聲明抽象
class
extends 擴充,繼承
final 最終值,不可改變的
implements 實現(xiàn)(接口)
interface 接口
native 本地袖肥,原生方法(非Java實現(xiàn))
new 新,創(chuàng)建
static 靜態(tài)
strictfp 嚴格,精準
synchronized 線程,同步
transient 短暫
volatile 易失
程序控制語句 break 跳出循環(huán)
case 定義一個值以供switch選擇
continue 繼續(xù)
default 默認
do 運行
else 否則
for 循環(huán)
if 如果
instanceof 實例
return 返回
switch 根據(jù)值選擇執(zhí)行
while 循環(huán)
錯誤處理 assert 斷言表達式是否為真
catch 捕捉異常
finally 有沒有異常都執(zhí)行
throw 拋出一個異常對象
throws 聲明一個異常可能被拋出
try 捕獲異常
包相關(guān) import 引入
package
基本類型 boolean 布爾型
byte 字節(jié)型
char 字符型
double 雙精度浮點
float 單精度浮點
int 整型
long 長整型
short 短整型
變量引用 super 父類,超類
this 本類
void 無返回值
保留關(guān)鍵字 goto 是關(guān)鍵字振劳,但不能使用
const 是關(guān)鍵字椎组,但不能使用
null
image

2.2 標識符

(1)就是給類,接口历恐,方法寸癌,變量等起名字的字符序列

(2)組成規(guī)則:

A: 首字符:字母(A-Z专筷、a-z)、美元符($)蒸苇、下劃線(_)

B: 首字符之后:字母(A-Z磷蛹、a-z)、美元符($)溪烤、下劃線(_)或者數(shù)字的任何字符組合

(3)注意事項:

A:不能以數(shù)字開頭

B:關(guān)鍵字不能作為標識符

C:區(qū)分大小寫

image

2.3 注釋

( 討厭寫自己寫注釋味咳,討厭別人不寫注釋 ~)

注釋就是為了方便自己或別人后期閱讀這部分代碼的提示,能夠快速的讓閱讀者檬嘀,了解這部分代碼的作用槽驶。

(1)注釋就是對程序進行解釋說明的文字(不會被編譯運行)

(2)分類:

A:單行注釋 // + 內(nèi)容

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

C:文檔注釋 /** */ 被javadoc工具解析成一個說明書,后期會講到

在我們前期的學習中枪眉,只需要掌握基本的單行注釋多行注釋即可

注釋規(guī)范:

1捺檬、類注釋 注釋模板如下:

/**

  • Copyright (C), 2006-2010, ChengDu Lovo info. Co., Ltd.

  • FileName: Test.java

  • 類的詳細說明

  • @author 類創(chuàng)建者姓名

  • @Date 創(chuàng)建日期

  • @version 1.00

*/

2、屬性注釋****注釋模板如下:

/** 提示信息 */private String strMsg = null;

3贸铜、方法注釋 注釋模板如下:

/**

  • 類方法的詳細使用說明

  • @param 參數(shù)1 參數(shù)1的使用說明

  • @return 返回結(jié)果的說明

  • @throws 異常類型.錯誤代碼 注明從此類方法中拋出異常的說明

*/

4堡纬、構(gòu)造方法注釋 注釋模板如下:

/**

  • 構(gòu)造方法的詳細使用說明

  • @param 參數(shù)1 參數(shù)1的使用說明

  • @throws 異常類型.錯誤代碼 注明從此類方法中拋出異常的說明

*/

5、方法內(nèi)部注釋 在方法內(nèi)部使用單行或者多行注釋

(根據(jù)實際情況添加)注釋模板如下:

//背景顏色Color bgColor = Color.RED

image

4 常量

(1) 常量就是在程序執(zhí)行的過程中蒿秦,其值不發(fā)生改變的量(例如π烤镐、重力加速度,光速等)

而在Java中我們使用final關(guān)鍵字來修飾常量

Eg:final double PI = 3.1415927

習慣 :雖然常量名也可以用小寫棍鳖,但為了便于識別炮叶,通常使用大寫字母 表示常量(隨大流就好啦)

(2)分類:

A:字面值常量

B:自定義常量

字面值常量:

C++ primer:像42這樣的值,在程序中被當作字面值常量:字面值是因為僅能用它的值稱呼它渡处,常量是因為它的值不能修改镜悉。每個字面值都有相應(yīng)的類型,例如:0是int型医瘫,3.14159是double型侣肄。字面值僅存在于內(nèi)置類型,沒有類類型的字面值醇份。因此稼锅,也沒有任何標準庫類型的字面值

簡單理解:例如 int a = 6; 它的字面值就是a, 它的實際值是 6

(3)字面值常量

A:字符串常量 "bwh"

B:整數(shù)常量 666,888

C:小數(shù)常量 123.456

D:字符常量 'a','Z','0'

E:布爾常量 true,false

F:空常量 null

(4)在Java中針對整數(shù)常量提供了四種表現(xiàn)形式

A:二進制 由0僚纷,1組成矩距。以0b開頭

B:八進制 由0怖竭,1锥债,...7組成。以0開頭

C:十進制 由0赞弥,1毅整,...9組成趣兄。整數(shù)默認是十進制绽左。

D:十六進制 由0,1艇潭,...9,a,b,c,d,e,f(大小寫均可)組成拼窥。以0x開頭

A:常見進制

image

常見進制的轉(zhuǎn)化:

常見進制 → 十進制 : 忽略前綴和0蹋凝,對1進行運算

0b10101 (二進制)

= 12^4 + 12^3 + 1*2^0

= 16 + 14 + 1

= 21

0123 (八進制)

= 18^2 + 28^1 + 3*8^0

= 64 + 16 + 3

= 83

0x3c (十六進制)

= 316^1 + 1216^0

= 48 + 12

=60

十進制 → 常見進制 :

除基取余鲁纠,直到商為0,余數(shù)反轉(zhuǎn)鳍寂。(轉(zhuǎn)換幾進制就將基數(shù)除以幾)

其他進制的轉(zhuǎn)換可以通過十進制這個中間進制進行轉(zhuǎn)換

熟悉2的倍數(shù)對我們也是很有幫助的

B: 補充:補碼改含、原碼、反碼

為什么我們要學習這些呢迄汛?首先我們要知道捍壤,在計算機內(nèi),有符號數(shù)有三種表示方法鞍爱,源碼鹃觉、反碼、和補碼睹逃。而所有的數(shù)據(jù)運算都是采用補碼進行的盗扇。它的重要性可想而知。

1沉填、原碼:二進制點表示法疗隶,最高位為符號位,“0”表示正翼闹,“1”表示負斑鼻,其 余位置表示數(shù)值大小,可直觀反映出數(shù)據(jù)的大小橄碾。

2卵沉、反碼:解決負數(shù)加法運算問題,將減法運算轉(zhuǎn)換為加法運算法牲,從而簡化運算規(guī)則史汗。

3、補碼:解決負數(shù)加法運算正負零問題拒垃,彌補了反碼的不足停撞。

image

7的二進制 :111

原碼 正數(shù)的原碼最高位是0負數(shù)的原碼最高位是1其他的是數(shù)值位
符號位 數(shù)值位數(shù)
+7 0 0000111(補夠8個字節(jié),在左面補4個0)
-7 1 0000111
反碼 正數(shù)的反碼與原碼相同負數(shù)的反碼與源碼符號位相同,數(shù)值位取反 1 → 0 戈毒、 0 → 1
符號位 數(shù)值位數(shù)
+7 0 0000111(補夠8個字節(jié)艰猬,在左面補4個0)
-7 1 1111000
補碼 正數(shù)的補碼與原碼相同負數(shù)的補碼是在反碼的基礎(chǔ)上+1
符號位 數(shù)值位數(shù)
+7 0 0000111(補夠8個字節(jié),在左面補4個0)
-7 1 1111001
image

2.5 變量

我們剛介紹了什么是常量埋市,那么什么是變量呢冠桃,顧名思義,變量就是在某個范圍內(nèi)可以變化的量道宅,其實它就是一個被你所定義的變量食听,在一個數(shù)據(jù)類型的約束下,可以在數(shù)據(jù)類型所允許的范圍內(nèi)進行污茵,被賦值樱报,運算,等操作泞当。

(變量可以不在定義的時候就賦初始化值迹蛤,但是在運行編譯時,如果被編譯變量仍沒被賦值襟士,則是沒有意義的盗飒,編譯器將會報錯

image

格式: 數(shù)據(jù)類型 變量名 = 初始化值

注意:可以在一行中聲明多個變量,但是我們不推薦這種方式敌蜂。

逐一聲明變量能提高程序的可讀性

image

變量類型:

· 局部變量

· 實例變量

· 類變量(靜態(tài)變量)

局部變量:定義在方法箩兽、構(gòu)造方法、或者語句塊中的變量

(生而帶來 死而帶去 只能活在自己的世界)

只能在一定范圍內(nèi)使用的變量章喉,隨著這個方法等的結(jié)束變量也就無效了

對于局部變量的理解汗贫,剛?cè)腴T可能也不會太深,等后面幾篇我們學習到方 法后秸脱,再回過頭來看這部分內(nèi)容落包,就會有一種明了的感覺。

實例變量:聲明在類中摊唇,但在方法咐蝇、構(gòu)造方法和語句塊之外

實例變量對于類中的方法、構(gòu)造方法或者語句塊是可見的巷查。一般情況下應(yīng)該把實例變量設(shè)為私有有序。通過使用訪問修飾符可以使實例變量對子類可見

暫時在學習基礎(chǔ)語法知識的時候可以暫時忽略實例變量這部分內(nèi)容,這部分內(nèi)容主要被使用在面向?qū)ο?/strong>的部分岛请,但是極其重要旭寿。

過了很久,你也不愿回頭看崇败,學習的進度就會很慢~

類變量: 后期補充

image

2.6 數(shù)據(jù)類型

? 2.6.1

Java是一種強類型的語言盅称,針對每一種數(shù)據(jù)都定義了明確的數(shù)據(jù)類型(就是將一些值的范圍做了約束肩祥,從而為不同類型的值在內(nèi)存中分配不同的內(nèi)存空間)

image

注意:在此部分暫時不用深究引用類型,著重認熟悉一下基本數(shù)據(jù)類型缩膝,引用類型在面向?qū)ο蟮牟糠謺敿毥忉尅?/p>

我們來看一下八種基本數(shù)據(jù)類型的詳細說明:

Name Size* Range*
byte 1byte 8bit 存放的數(shù)據(jù)范圍是-128~127之間
short 2bytes 16bit 最大數(shù)據(jù)存儲量是65536混狠,數(shù)據(jù)范圍是-32768~32767之間。
int 4bytes 32bit 數(shù)據(jù)范圍是負的2的31次方到正的2的31次方減1疾层。
long 4bytes 64bit 數(shù)據(jù)范圍為負的2的63次方到正的2的63次方減1将饺。
float 4bytes 32bit 數(shù)據(jù)范圍在3.4e-45~1.4e38,直接賦值時必須在數(shù)字后加上f或F
double 8bytes 64bit 數(shù)據(jù)范圍在4.9e-324~1.8e308云芦,賦值時可以加d或D也可以不加俯逾。
boolean 只有true和false兩個取值。
char 2bytes 存儲Unicode碼舅逸,用單引號賦值。

注意:

  1. 整數(shù)默認是int類型

聲明long型常量的時候長整數(shù)要加L或者l

如:long l = 66666666666666L//否則報錯

  1. 浮點數(shù)默認是double(雙精度浮點型)

聲明float型(單精度的浮點數(shù))要加F或者

如:double d = 521.1 //正確 float f = 52.1f //必須加f

  1. boolean一般用來進行邏輯運算→流程控制中

  2. Byte皇筛、short類型被賦值時琉历,其實接收的是一個int類型的值,不 在范圍內(nèi)即報錯

  3. 一個中文字符占據(jù)兩用字節(jié)水醋,Java中字符可以存儲一個漢字旗笔,是 因為Java字符采用Unicode編碼,每個字符占用兩個字節(jié)拄踪。

  4. Java中提供了三個特殊的浮點數(shù)值蝇恶,正無窮大(正數(shù)除以0),負無窮大(負數(shù)除以0)惶桐,NaN(不是一個數(shù)字,0除以0撮弧,負數(shù)開根號)

image
? 2.6.2數(shù)據(jù)類型轉(zhuǎn)換

一般來說,我們在運算的時候姚糊,要求參與運算的數(shù)值類型必須一致

(1)默認轉(zhuǎn)換(從小到大的轉(zhuǎn)換)—自動類型轉(zhuǎn)換

A:byte贿衍,short, char ( → int → long → float → double )

B:byte,short, char 相互之間不轉(zhuǎn)換

他們參與運算首先轉(zhuǎn)換為int類型

疑惑:****為什么 float(4個字節(jié))在 long(8個字節(jié))后面

A: 它們底層的存儲結(jié)構(gòu)不同

B: float表示的數(shù)據(jù)范圍比long范圍要大

long:2^63-1

float:3.410^38 > 210^38 > 28^38 > 22338

= 2*2^144 > 2^63 -1

例子一 :低精度byte到高精度int 會根據(jù)默認轉(zhuǎn)換救恨,自動轉(zhuǎn)換類型

image
image

例子二 :高精度int到低精度byte 可能會損失精

image
image

byte數(shù)據(jù)類型是 1個字節(jié)贸辈、8位

int 數(shù)據(jù)類型是 4個字節(jié)、32位

但是有沒有辦法能夠讓我們輸出這種運算的結(jié)果呢肠槽?這就需要我們用到強制類型轉(zhuǎn)換的知識擎淤。

(2)強制類型轉(zhuǎn)換

格式:目標數(shù)據(jù)類型 變量 = (目標數(shù)據(jù)類型)(被轉(zhuǎn)換的數(shù)據(jù))

注意:不要隨便的去用強制轉(zhuǎn)化,因為它隱含了精度損失的問題

在把容量大的類型轉(zhuǎn)換為容量小的類型時必須使用強制類型轉(zhuǎn)換秸仙。

例子:

int i = 128;

byte b = (byte)i;

因為byte類型是8位嘴拢,最大值為127,所以當int強制轉(zhuǎn)換為byte類

型的時候筋栋,值128就會導(dǎo)致溢出

很經(jīng)典的題目 1: 永遠做不對系列

image

第一句: byte類型的 b1 ,b2相加 自動類型轉(zhuǎn)換為 int型

int類型的(b1 + b2) 賦值給byte類型的b

屬于大單位轉(zhuǎn)換為小單位 可能造成精度損失

第二句: 3 和4 為常量炊汤,編譯過程中 先把結(jié)果計算出來,

然后看是否在byte的范圍內(nèi),如果在就不報錯

總結(jié):

變量相加抢腐,會首先看類型問題姑曙,最終把結(jié)果賦值也會考慮類型問題

常量相加,首先做加法迈倍,然后看結(jié)果是否在賦值的數(shù)據(jù)類型范圍內(nèi)伤靠,如果不是,才報錯

很經(jīng)典的題目 2: 永遠不會做系列

求輸出結(jié)果:

image

分析過程:

我們想要知道結(jié)果是什么啼染,就應(yīng)該知道是如何計算的

而我們又知道計算機中數(shù)據(jù)的運算都是補碼進行的

得到補碼宴合,首先要計算出數(shù)據(jù)的二進制

A: 求出130的二進制 10000010

130 是一個整數(shù) 所以補齊4個字節(jié) (一個字節(jié)8位)

0000000 00000000 00000000 10000010

B: 做截取操作,截成byte類型的了

10000010

這個結(jié)果是補碼

? C已知補碼求原碼迹鹅。

符號位 數(shù)值位
補碼: 1 0000010
反碼: 1 0000001
原碼 1 1111110
11111110轉(zhuǎn)換為十進制為 -126
image

2.7 字符

字符是指在計算機中所使用的 字母卦洽、數(shù)字、漢字斜棚、和符號阀蒂,表示時用單引號包含在內(nèi)。

例如: ‘5’ ‘R’ ‘弟蚀≡橄迹’均是字符

在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲 义钉,即以整數(shù)表示

需要記憶的常見字符‘a(chǎn)’→ 97 ‘A’→ 65 ‘0’→ 48

其余字符依次遞推即可

image

一種特殊的字符——轉(zhuǎn)義字符

轉(zhuǎn)移字符 = 轉(zhuǎn)義 + 字符 → 轉(zhuǎn)變含義的字符(不再是本來字符的意思)

結(jié)構(gòu):\ + 一些特定的字母

image

其中 \n (換行)和 \t(制表符)最為常用

(一)下面兩種輸出變量love的方法均有換行效果

image

補充: \r和 \n的區(qū)別

回車 \r 意思是光標重新回到本行的開頭

換行 \n 光標移動到下一行昧绣,不一定是行首,取決于其后是否還有內(nèi)容

(因為我們常用在一行的句末,所以會誤以為會在下一行的行首)

針對不同系統(tǒng)的換行符:

蘋果系統(tǒng)Mac \n

Unix捶闸、Linux系統(tǒng) \n

Windows系統(tǒng) \r\n

在windows中夜畴,如果在兩端字符串的中間使用轉(zhuǎn)義字符,只有使用 \r\n才能真正的達到了我們?nèi)粘2僮髦屑停剀嚀Q行的那種效果斩启。

(二)\t是補全當前字符串長度到8,最少1個醉锅,最多8個空格

所以靈活的使用制表符可以達到對齊兩行數(shù)據(jù)的作用

image
image
image

2.8 字符串

字符串是由零個或者多個字符組成的有限序列兔簇,它是編程中表示文本的數(shù)據(jù)類型

字符串使用的時候用雙引號括起來

String并不是Java中的基本方法,而是一個類硬耍。

我們在此部分不做過多的介紹垄琐,但要知道,String類是一個非常非常重要的類>瘛@昃健!

我們會在后面有專門一大篇介紹

image
image

總結(jié):

字符串和其他數(shù)據(jù)做加法運算的時候坯认,結(jié)果是字符串類型翻擒。

這里的 + 不是加法運算氓涣,而是字符串連接符

image

2.9 運算符

image

算數(shù)運算符

賦值運算符

比較運算符

邏輯運算符

位運算符

三目運算符

01

image
? 2.9.1 算數(shù)運算符: + - * / % ++ --

A: 整數(shù)相除只能得到整數(shù)(想得到小數(shù) 需將其中任意的一個數(shù)據(jù)變成浮點 數(shù))

Eg: int x = 3;

int y = 4;

System.out.println(x/y); →System.out.println(x * 1.0 / y );

B: /除法求商 %除法取余

C: ++, -- 就是對變量進行自增1或者自減1. 參與運算 前置后置有區(qū)別

來一道例題,大家就整明白了:

Eg : int x = 4;

int y = ( x++ ) + ( ++x ) + ( x * 10);

System.out.println( y );

//首先 x后置++ 所以括號1中 x運算時取4 然后自增為5

其次 x前置++ 所以括號2中 x = 6

最后 x * 10 = 6 * 10 = 60

? Output y → 4 + 6 + 60 = 70

image
?2.92 賦值運算符

基本的賦值運算符:=

擴展的賦值運算符:+=陋气,-=劳吠,=,/=巩趁,%=*

在剛開始的時候我們書寫賦值語句痒玩,還是推薦使用 基本的方法,待到日后熟練议慰,再轉(zhuǎn)為擴展的賦值語句

image

很經(jīng)典的題目 1: 你猜到底對不對

image

編譯第一個語句報錯:

image

編譯第二個語句沒有報錯:(? ? ?)

擴展的賦值運算符其實隱含了一個強制類型轉(zhuǎn)換

s += 1蠢古; 不是等價于 s = s + 1 而是等價于 s = ( s的數(shù)據(jù)類型 ) (s + 1);

image
?2.9.3關(guān)系運算符 ==, != , > , >= , < , <=*

== 無論你的操作是簡單還是復(fù)雜木結(jié)構(gòu)是boolean類型

image

Output → flase

image
?2.9.4 邏輯運算符 & | && || !
image

邏輯運算符用于連接布爾型表達式别凹,在java中草讶。不可以寫成3 < x < 6 應(yīng)該寫 成 x > 3 & x < 6

&&和&的區(qū)別? 同理||和|的區(qū)別

A: 最終結(jié)果一樣

B: &&具有短路作用番川。左邊是false到涂,右邊不執(zhí)行。(&&效率更高

eg:int x = 3颁督; int y = 4;

boolean b1 = ( ( x++ = 3) ) && ( y++ = 4 )

結(jié)果: x = 4 浇雹,y = 4 沉御,true

image
?2.9.5 位運算符

(3 & 4) (3 | 4) (3 ^ 4) (~3) (3 << 2) (>>) (>>>)

因為是位運算,所以我們需要把數(shù)據(jù)換算成二進制

image

^的特點:一個數(shù)據(jù)對另一個數(shù)據(jù)位異或兩次昭灵,該數(shù)本身不變

很經(jīng)典的題目 1: 交換兩個整型數(shù)的值

做一個靈活的交換者

image
image

· 我們先直接給出位運算的結(jié)論

image

這是詳細的運算過程吠裆,但是我們使用時直接用結(jié)論即可

image
image
image

題目:

請用最有效率的方式寫出計算2乘以8的結(jié)果?

2 * 8

2 << 3

image
?2.9.6 三目運算符

這一部分要與下面馬上要學習的if語句進行對照學習

滿足表達式則執(zhí)行冒號前的表達式烂完,反之則時候后面的

格式 : (條件表達式)试疙?(條件真的表達式):(條件假的表達式)

條件表達式:結(jié)果是一個boolean型

Eg: 將a,b 中的較小數(shù)賦值給x

x = a < b ? a : b → if (a < b) x = a; else x = b

image
image

2.10 鍵盤錄入

我們之前所寫的程序中,數(shù)據(jù)的值都是固定的抠蚣,在源碼中就寫好的祝旷,而我們有時候想要讓用戶來決定一些值的具體數(shù)據(jù)(例如:學生成績錄入),所以鍵盤錄入就是讓用戶輸入一些值嘶窄,使得程序更加靈活怀跛。

現(xiàn)在我們對于導(dǎo)包以及對象的概念仍然比較模糊,但是我們在介紹別的知識的時候也會頻繁的用到柄冲,所以大家暫時按照以下的格式記憶下來吻谋。

A:導(dǎo)包:

格式:import java.util.Scanner;

位置:在class上面

B:創(chuàng)建鍵盤錄入對象

格式:Scanner sc = new Scanner(System.in);

C:通過對象獲取數(shù)據(jù)

格式: int x = sc.nextint();

String s = sc.nextLine(); (字符串錄入)

image
image

2.11 選擇結(jié)構(gòu)(分支結(jié)構(gòu))

· if 語句

· switch 語句

認識選擇結(jié)構(gòu)后我們的程序就會變得很有趣了,我們先來學習一下最常見的If條 件語句

(一) if語句
image

更正:滿足就執(zhí)行现横,不滿足就出去

image

我們對照三元運算符和if語句漓拾,這兩個是不是完全一樣的呢阁最?

三元運算符的操作都可以使用if語句改進,反之不成立

什么時候不成立呢骇两?

當if語句控制的語句體是一條輸出語句的時候速种,就不成立。

因為三元運算符是一個運算符脯颜,必須要求有一個結(jié)果返回哟旗。

而輸出語句卻不能作為一個返回結(jié)果

image

三個數(shù)中求最大值:可以用三目運算 跳轉(zhuǎn)2.9.6

用if語句實現(xiàn):

image
(二) switch語句

image

image

image

注意: ·case后面只能是常量,不能是變量栋操,而且不能出現(xiàn)相同的

·default可以省略 但是一般不建議闸餐,

(除非判斷的值是固定的,單選題)

·break 可以省略矾芙,一般不建議

·default可以出現(xiàn)在switch語句的任意位置

·switch語句的結(jié)束條件:

遇到break 或者 執(zhí)行到程序的末尾

以下條件選用switch

·條件分支有多個

·條件的值是整數(shù)或一個字符型

原因

·如果條件分支太多時用if語句舍沙,一定會出現(xiàn)if的嵌套,if嵌套的越多剔宪,程序 的開銷就會隨著增大拂铡,這樣整個程序的運行效率就一定會大大降低

·switch值比較一次就可以找出條件的結(jié)果

我們在下面將上面的if成績例程改為switch版本是不是簡潔了很多呢

image

image

2.12 循環(huán)語句

· for循環(huán)

· while循環(huán)

· do ...while循環(huán)

我們?nèi)绻嬖诖罅康闹貜?fù)語句,我們就可以使用循環(huán)語句葱绒,進行處理感帅。

(一)for循環(huán)
image

for 語句不僅適用于循環(huán)次數(shù)明確的情況,也適用于循環(huán)次數(shù)不明確的情況 (滿足條件繼續(xù)循環(huán)地淀,不滿足跳出循環(huán))

image

求偶數(shù)和還有一種方法:

for ( int x =0; x <= 100; x+=2){

Sum += x

}

求5的階乘

*//分析 什么是階乘 n! = n * ( n -1 ) * ( n - 2) * ... * 3 * 2 1

int jc = 1; //定義最終結(jié)果變量

for ( int x = 1; x <= 5; x++ ){

*Jc = x

}

在控制臺輸出所有的水仙花數(shù)

//水仙花數(shù)就是指一個三位數(shù)失球,其各位數(shù)字的立方等于該數(shù)本身

Eg:153 = 111 +555+ 333 = 125 +27 =153**

通過 for循環(huán)我們可以實現(xiàn)獲取一個三位數(shù)

獲取這個三位數(shù)的個十百位上的數(shù)據(jù)

獲取方法: 假設(shè)有一個數(shù)據(jù)為 153

Ge: 153 % 10 =3

Shi :153 / 10 % 10 = 5

Bai: 153 / 10 / 10 % 10 = 1

Qian: x/10/10/10%10

Wan :x/10/10/10/10%10

利用嵌套循環(huán):可以輸出各種樣式的三角形

外循環(huán)控制行數(shù),內(nèi)循環(huán)控制列數(shù)

System.out.print(****“ ***** ”****) → 不換行

System.out.println() → 換行

九九乘法表

image

(二)while循環(huán)
image

判斷條件表達式的值為邏輯真時帮毁,重復(fù)執(zhí)行循環(huán)體(不滿足出去)

死循環(huán):

第一種:

for(;;){}

第二種:

while(true){}

image

While循環(huán)和for循環(huán)的區(qū)別实苞?

使用區(qū)別:

for循環(huán) 控制條件定義的變量,只能在循環(huán)內(nèi)使用

while 循環(huán) ..... 可以在循環(huán)外使用

因為變量及早的從內(nèi)存中消失烈疚,可以提高內(nèi)存的使用效率

另一種理解:

for 語句不僅適用于循環(huán)次數(shù)明確的情況黔牵,也適用于循環(huán)次數(shù)不明確的情況

while 循環(huán)適用于循環(huán)次數(shù)不明確的情況

(三)do ... while循環(huán)

?
image

先執(zhí)行循環(huán)體,再判斷繼續(xù)條件不為邏輯真時爷肝,再執(zhí)行循環(huán)體并判斷條 件猾浦, 直到條件為假轉(zhuǎn)去執(zhí)行while下面的語句(不滿足出去)

至少要執(zhí)行一次

image

2.12 跳轉(zhuǎn)控制語句

·break:中斷

·continue: 繼續(xù)

·return: 返回

(一)break 的意思是中斷

適用:switch、循環(huán)語句中(循環(huán)語句中加入了if判斷的情況)

跳出單層循環(huán)(從最近的封閉循環(huán)體中跳出

若想跳出多層循環(huán) 需要使用帶標簽的語句

格式:標簽名:語句

image

(二)continue 繼續(xù)的意思是

跳出一次循環(huán)進入下一次的執(zhí)行

結(jié)束本次循環(huán)阶剑,進入下次循環(huán)的判定跃巡。

image
image

(三)retuen

return關(guān)鍵字不是為了跳出循環(huán)體,更常用的功能是(結(jié)束一個方法)牧愁,也就是退出一個方法素邪。跳轉(zhuǎn)到上層調(diào)用的方法。

image

結(jié)尾:

如果內(nèi)容中有什么不足猪半,或者錯誤的地方兔朦,歡迎大家給我留言提出意見, 蟹蟹大家 偷线!_

如果能幫到你的話蹬蚁,那就來關(guān)注我吧撼嗓!

在這里的我們素不相識咳秉,卻都在為了自己的夢而努力 ?

一個堅持推送原創(chuàng)Java技術(shù)的公眾號:理想二旬不止

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末徐许,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钝鸽,更是在濱河造成了極大的恐慌嘉抓,老刑警劉巖毡泻,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恨诱,死亡現(xiàn)場離奇詭異媳瞪,居然都是意外死亡,警方通過查閱死者的電腦和手機照宝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門蛇受,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人厕鹃,你說我怎么就攤上這事兢仰。” “怎么了剂碴?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵把将,是天一觀的道長。 經(jīng)常有香客問我忆矛,道長秸弛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任洪碳,我火速辦了婚禮,結(jié)果婚禮上叼屠,老公的妹妹穿的比我還像新娘瞳腌。我一直安慰自己,他們只是感情好镜雨,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布嫂侍。 她就那樣靜靜地躺著,像睡著了一般荚坞。 火紅的嫁衣襯著肌膚如雪挑宠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天颓影,我揣著相機與錄音各淀,去河邊找鬼。 笑死诡挂,一個胖子當著我的面吹牛碎浇,可吹牛的內(nèi)容都是我干的临谱。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼奴璃,長吁一口氣:“原來是場噩夢啊……” “哼悉默!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起苟穆,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抄课,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雳旅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跟磨,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年岭辣,在試婚紗的時候發(fā)現(xiàn)自己被綠了吱晒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡沦童,死狀恐怖仑濒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情偷遗,我是刑警寧澤墩瞳,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站氏豌,受9級特大地震影響喉酌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜泵喘,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一泪电、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纪铺,春花似錦相速、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芜繁,卻和暖如春旺隙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骏令。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工蔬捷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伏社。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓抠刺,卻偏偏與公主長得像塔淤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子速妖,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

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