摘要:而所有的數(shù)據(jù)運算都是采用補碼進行的。補碼解決負數(shù)加法運算正負零問題,彌補了反碼的不足。通過使用訪問修飾符可以使實例變量對子類可見暫時在學(xué)習(xí)基礎(chǔ)語法知識的時候可以暫時忽略實例變量這部分內(nèi)容,這部分內(nèi)容主要被使用在面向?qū)ο蟮牟糠郑菢O其重要。
第一階段 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例程來說,我們就用到了 類名、主方法這兩點。
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 | 聲明一個異??赡鼙粧伋?/td> | |
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 | 空 |
(1)就是給類,接口,方法,變量等起名字的字符序列
(2)組成規(guī)則:
A: 首字符:字母(A-Z、a-z)、美元符($)、下劃線(_)
B: 首字符之后:字母(A-Z、a-z)、美元符($)、下劃線(_)或者數(shù)字的任何字符組合
(3)注意事項:
A:不能以數(shù)字開頭
B:關(guān)鍵字不能作為標識符
C:區(qū)分大小寫
2.3 注釋( 討厭寫自己寫注釋,討厭別人不寫注釋 ~)
注釋就是為了方便自己或別人后期閱讀這部分代碼的提示,能夠快速的讓閱讀者,了解這部分代碼的作用。
(1)注釋就是對程序進行解釋說明的文字(不會被編譯運行)
(2)分類:
A:單行注釋 // + 內(nèi)容
B:多行注釋 /*內(nèi)容*/
C:文檔注釋 /* / 被javadoc工具解析成一個說明書,后期會講到
在我們前期的學(xué)習(xí)中,只需要掌握基本的單行注釋和多行注釋即可
注釋規(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
2.4 常量(1) 常量就是在程序執(zhí)行的過程中,其值不發(fā)生改變的量(例如π、重力加速度,光速等)
而在Java中我們使用final關(guān)鍵字來修飾常量
Eg:final double PI = 3.1415927
習(xí)慣 :雖然常量名也可以用小寫,但為了便于識別,通常使用大寫字母 表示常量(隨大流就好啦)
(2)分類:
A:字面值常量
B:自定義常量
字面值常量:
C++ primer:像42這樣的值,在程序中被當(dāng)作字面值常量:字面值是因為僅能用它的值稱呼它,常量是因為它的值不能修改。每個字面值都有相應(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:常見進制
常見進制的轉(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: 補充:補碼、原碼、反碼
為什么我們要學(xué)習(xí)這些呢?首先我們要知道,在計算機內(nèi),有符號數(shù)有三種表示方法,源碼、反碼、和補碼。而所有的數(shù)據(jù)運算都是采用補碼進行的。它的重要性可想而知。
1、原碼:二進制點表示法,最高位為符號位,“0”表示正,“1”表示負,其 余位置表示數(shù)值大小,可直觀反映出數(shù)據(jù)的大小。
2、反碼:解決負數(shù)加法運算問題,將減法運算轉(zhuǎn)換為加法運算,從而簡化運算規(guī)則。
3、補碼:解決負數(shù)加法運算正負零問題,彌補了反碼的不足。
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 |
我們剛介紹了什么是常量,那么什么是變量呢,顧名思義,變量就是在某個范圍內(nèi)可以變化的量,其實它就是一個被你所定義的變量,在一個數(shù)據(jù)類型的約束下,可以在數(shù)據(jù)類型所允許的范圍內(nèi)進行,被賦值,運算,等操作。
(變量可以不在定義的時候就賦初始化值,但是在運行編譯時,如果被編譯變量仍沒被賦值,則是沒有意義的,編譯器將會報錯)
格式: 數(shù)據(jù)類型 變量名 = 初始化值
注意:可以在一行中聲明多個變量,但是我們不推薦這種方式。
逐一聲明變量能提高程序的可讀性
變量類型:
· 局部變量
· 實例變量
· 類變量(靜態(tài)變量)
局部變量:定義在方法、構(gòu)造方法、或者語句塊中的變量
(生而帶來 死而帶去 只能活在自己的世界)
只能在一定范圍內(nèi)使用的變量,隨著這個方法等的結(jié)束變量也就無效了
對于局部變量的理解,剛?cè)腴T可能也不會太深,等后面幾篇我們學(xué)習(xí)到方 法后,再回過頭來看這部分內(nèi)容,就會有一種明了的感覺。
實例變量:聲明在類中,但在方法、構(gòu)造方法和語句塊之外
實例變量對于類中的方法、構(gòu)造方法或者語句塊是可見的。一般情況下應(yīng)該把實例變量設(shè)為私有。通過使用訪問修飾符可以使實例變量對子類可見
暫時在學(xué)習(xí)基礎(chǔ)語法知識的時候可以暫時忽略實例變量這部分內(nèi)容,這部分內(nèi)容主要被使用在面向?qū)ο?/strong>的部分,但是極其重要。
過了很久,你也不愿回頭看,學(xué)習(xí)的進度就會很慢~
類變量: 后期補充
2.6 數(shù)據(jù)類型Java是一種強類型的語言,針對每一種數(shù)據(jù)都定義了明確的數(shù)據(jù)類型(就是將一些值的范圍做了約束,從而為不同類型的值在內(nèi)存中分配不同的內(nèi)存空間)
注意:在此部分暫時不用深究引用類型,著重認熟悉一下基本數(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碼,用單引號賦值。 |
注意:
整數(shù)默認是int類型
聲明long型常量的時候長整數(shù)要加L或者l
如:long l = 66666666666666L//否則報錯
浮點數(shù)默認是double(雙精度浮點型)
聲明float型(單精度的浮點數(shù))要加F或者
如:double d = 521.1 //正確 float f = 52.1f //必須加f
boolean一般用來進行邏輯運算→流程控制中
Byte、short類型被賦值時,其實接收的是一個int類型的值,不 在范圍內(nèi)即報錯
一個中文字符占據(jù)兩用字節(jié),Java中字符可以存儲一個漢字,是 因為Java字符采用Unicode編碼,每個字符占用兩個字節(jié)。
Java中提供了三個特殊的浮點數(shù)值,正無窮大(正數(shù)除以0),負無窮大(負數(shù)除以0),NaN(不是一個數(shù)字,0除以0,負數(shù)開根號)
一般來說,我們在運算的時候,要求參與運算的數(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 > 22^3^38
= 2*2^144 > 2^63 -1
例子一 :低精度byte到高精度int 會根據(jù)默認轉(zhuǎn)換,自動轉(zhuǎn)換類型
例子二 :高精度int到低精度byte 可能會損失精度
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,所以當(dāng)int強制轉(zhuǎn)換為byte類
型的時候,值128就會導(dǎo)致溢出
很經(jīng)典的題目 1: 永遠做不對系列
第一句: 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é)果:
分析過程:
我們想要知道結(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 |
字符是指在計算機中所使用的 字母、數(shù)字、漢字、和符號,表示時用單引號包含在內(nèi)。
例如: ‘5’ ‘R’ ‘。’均是字符
在內(nèi)存中,字符數(shù)據(jù)以ASCII碼存儲 ,即以整數(shù)表示
需要記憶的常見字符‘a(chǎn)’→ 97 ‘A’→ 65 ‘0’→ 48
其余字符依次遞推即可
一種特殊的字符——轉(zhuǎn)義字符
轉(zhuǎn)移字符 = 轉(zhuǎn)義 + 字符 → 轉(zhuǎn)變含義的字符(不再是本來字符的意思)
結(jié)構(gòu): + 一些特定的字母
其中 n (換行)和 t(制表符)最為常用
(一)下面兩種輸出變量love的方法均有換行效果
補充: r和 n的區(qū)別
回車 r 意思是光標重新回到本行的開頭
換行 n 光標移動到下一行,不一定是行首,取決于其后是否還有內(nèi)容
(因為我們常用在一行的句末,所以會誤以為會在下一行的行首)
針對不同系統(tǒng)的換行符:
蘋果系統(tǒng)Mac n
Unix、Linux系統(tǒng) n
Windows系統(tǒng) rn
在windows中,如果在兩端字符串的中間使用轉(zhuǎn)義字符,只有使用 rn才能真正的達到了我們?nèi)粘2僮髦?,回車換行的那種效果。
(二)t是補全當(dāng)前字符串長度到8,最少1個,最多8個空格
所以靈活的使用制表符可以達到對齊兩行數(shù)據(jù)的作用
2.8 字符串字符串是由零個或者多個字符組成的有限序列,它是編程中表示文本的數(shù)據(jù)類型
字符串使用的時候用雙引號括起來
String并不是Java中的基本方法,而是一個類。
我們在此部分不做過多的介紹,但要知道,String類是一個非常非常重要的類?。?!
我們會在后面有專門一大篇介紹
總結(jié):
字符串和其他數(shù)據(jù)做加法運算的時候,結(jié)果是字符串類型。
這里的 + 不是加法運算,而是字符串連接符
2.9 運算符算數(shù)運算符
賦值運算符
比較運算符
邏輯運算符
位運算符
三目運算符
01
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
基本的賦值運算符:=
擴展的賦值運算符:+=,-=,*=,/=,%=
在剛開始的時候我們書寫賦值語句,還是推薦使用 基本的方法,待到日后熟練,再轉(zhuǎn)為擴展的賦值語句
很經(jīng)典的題目 1: 你猜到底對不對
編譯第一個語句報錯:
編譯第二個語句沒有報錯:(? ? ?)
擴展的賦值運算符其實隱含了一個強制類型轉(zhuǎn)換
s += 1; 不是等價于 s = s + 1 而是等價于 s = ( s的數(shù)據(jù)類型 ) (s + 1);
== 無論你的操作是簡單還是復(fù)雜木結(jié)構(gòu)是boolean類型
Output → flase
邏輯運算符用于連接布爾型表達式,在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
(3 & 4) (3 | 4) (3 ^ 4) (~3) (3 << 2) (>>) (>>>)
因為是位運算,所以我們需要把數(shù)據(jù)換算成二進制
^的特點:一個數(shù)據(jù)對另一個數(shù)據(jù)位異或兩次,該數(shù)本身不變
很經(jīng)典的題目 1: 交換兩個整型數(shù)的值
做一個靈活的交換者
· 我們先直接給出位運算的結(jié)論
這是詳細的運算過程,但是我們使用時直接用結(jié)論即可
題目:
請用最有效率的方式寫出計算2乘以8的結(jié)果?
2 * 8
2 << 3
這一部分要與下面馬上要學(xué)習(xí)的if語句進行對照學(xué)習(xí)
滿足表達式則執(zhí)行冒號前的表達式,反之則時候后面的
格式 : (條件表達式)?(條件真的表達式):(條件假的表達式)
條件表達式:結(jié)果是一個boolean型
Eg: 將a,b 中的較小數(shù)賦值給x
x = a < b ? a : b → if (a < b) x = a; else x = b
2.10 鍵盤錄入我們之前所寫的程序中,數(shù)據(jù)的值都是固定的,在源碼中就寫好的,而我們有時候想要讓用戶來決定一些值的具體數(shù)據(jù)(例如:學(xué)生成績錄入),所以鍵盤錄入就是讓用戶輸入一些值,使得程序更加靈活。
現(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(); (字符串錄入)
2.11 選擇結(jié)構(gòu)(分支結(jié)構(gòu))· if 語句
· switch 語句
認識選擇結(jié)構(gòu)后我們的程序就會變得很有趣了,我們先來學(xué)習(xí)一下最常見的If條 件語句
更正:滿足就執(zhí)行,不滿足就出去
我們對照三元運算符和if語句,這兩個是不是完全一樣的呢?
三元運算符的操作都可以使用if語句改進,反之不成立
什么時候不成立呢?
當(dāng)if語句控制的語句體是一條輸出語句的時候,就不成立。
因為三元運算符是一個運算符,必須要求有一個結(jié)果返回。
而輸出語句卻不能作為一個返回結(jié)果
三個數(shù)中求最大值:可以用三目運算 跳轉(zhuǎn)2.9.6
用if語句實現(xiàn):
注意: ·case后面只能是常量,不能是變量,而且不能出現(xiàn)相同的
·default可以省略 但是一般不建議,
(除非判斷的值是固定的,單選題)
·break 可以省略,一般不建議
·default可以出現(xiàn)在switch語句的任意位置
·switch語句的結(jié)束條件:
遇到break 或者 執(zhí)行到程序的末尾
以下條件選用switch
·條件分支有多個
·條件的值是整數(shù)或一個字符型
原因
·如果條件分支太多時用if語句,一定會出現(xiàn)if的嵌套,if嵌套的越多,程序 的開銷就會隨著增大,這樣整個程序的運行效率就一定會大大降低
·switch值比較一次就可以找出條件的結(jié)果
我們在下面將上面的if成績例程改為switch版本是不是簡潔了很多呢
2.12 循環(huán)語句
· for循環(huán)
· while循環(huán)
· do ...while循環(huán)
我們?nèi)绻嬖诖罅康闹貜?fù)語句,我們就可以使用循環(huán)語句,進行處理。
for 語句不僅適用于循環(huán)次數(shù)明確的情況,也適用于循環(huán)次數(shù)不明確的情況 (滿足條件繼續(xù)循環(huán),不滿足跳出循環(huán))
求偶數(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 = 1*11 +555+ 33*3 = 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() → 換行
九九乘法表
判斷條件表達式的值為邏輯真時,重復(fù)執(zhí)行循環(huán)體(不滿足出去)
死循環(huán):
第一種:
for(;;){}
第二種:
while(true){}
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ù)不明確的情況
?
先執(zhí)行循環(huán)體,再判斷繼續(xù)條件不為邏輯真時,再執(zhí)行循環(huán)體并判斷條 件, 直到條件為假轉(zhuǎn)去執(zhí)行while下面的語句(不滿足出去)
至少要執(zhí)行一次
2.12 跳轉(zhuǎn)控制語句
·break:中斷
·continue: 繼續(xù)
·return: 返回
(一)break 的意思是中斷
適用:switch、循環(huán)語句中(循環(huán)語句中加入了if判斷的情況)
跳出單層循環(huán)(從最近的封閉循環(huán)體中跳出)
若想跳出多層循環(huán) 需要使用帶標簽的語句
格式:標簽名:語句
(二)continue 繼續(xù)的意思是
跳出一次循環(huán)進入下一次的執(zhí)行
(結(jié)束本次循環(huán),進入下次循環(huán)的判定。)
(三)retuen
return關(guān)鍵字不是為了跳出循環(huán)體,更常用的功能是(結(jié)束一個方法),也就是退出一個方法。跳轉(zhuǎn)到上層調(diào)用的方法。
結(jié)尾:如果內(nèi)容中有什么不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^
如果能幫到你的話,那就來關(guān)注我吧!
在這里的我們素不相識,卻都在為了自己的夢而努力 ?一個堅持推送原創(chuàng)Java技術(shù)的公眾號:理想二旬不止
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/74632.html
摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...
摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...
摘要:轉(zhuǎn)行前端有哪些疑慮在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面這里前后端指的是開發(fā)的前后端。 轉(zhuǎn)行前端有哪些疑慮? 在人生的抉擇處,尋求一些別人的經(jīng)驗和總結(jié),無可厚非,但是決定了就一定要堅定的走下去,謹慎是為了更好的堅持,而不是放棄的理由。寫在前面:這里前后端指的是web開發(fā)的前后端。1、前端崗位需...
摘要:是生命周期中的事件,是要執(zhí)行的命令。全局安裝將安裝包放在下或者你的安裝目錄可以直接在命令行里使用卸載模塊既然可以安裝那么也會有卸載模塊的方式,卸載完以后查看一下該模塊是否存在更新模塊更多知識我們會在你真的會嗎二中來講解大家敬請期待。 showImg(https://segmentfault.com/img/bVbtW1q?w=1540&h=748); 什么是NPM npm是什么東東?n...
摘要:上篇文章開始了我的基礎(chǔ)系列之旅,下面應(yīng)該開始學(xué)習(xí)基礎(chǔ)語法了。不同進制的數(shù)據(jù)組成五今日總結(jié)至此從零開始學(xué)習(xí)基礎(chǔ)語法上已結(jié)束。 showImg(https://segmentfault.com/img/remote/1460000016094801); 今天找到這張圖片,我非常喜歡。以后這就是我們「從零開始學(xué) Java 系列」的題圖。 上篇文章開始了我的 Java 基礎(chǔ)系列之旅,下面應(yīng)該開...
閱讀 1585·2021-11-25 09:43
閱讀 2488·2019-08-30 15:54
閱讀 2952·2019-08-30 15:53
閱讀 1102·2019-08-30 15:53
閱讀 757·2019-08-30 15:52
閱讀 2550·2019-08-26 13:36
閱讀 821·2019-08-26 12:16
閱讀 1221·2019-08-26 12:13