第一周學習總結
- Java的環境概述與環境搭建
-
- 概述
- Java的環境搭建
- 關鍵字
- 辨別符
- 常量的概念以及分類
- 進制的由來,進制的轉換
- 有符号位資料表示法(符号位+數值位)
- 變量和資料類型
- 運算符
- 控制台輸入
- 流程控制語句:
- 循環結構
Java的環境概述與環境搭建
概述
-
什麼是程式?
程式是為了模拟現實世界,解決現實問題而使用計算機語言編寫一系列有序的指定集合。
-
Java的特點
(1)面向對象:貼近人類思維,模拟現實世界,解決現實問題。
(2)簡單性:自動記憶體管理機制,不易造成記憶體溢出,簡化流程處理,語義清晰。
(3)跨平台:跨作業系統和跨伺服器。
- 電腦都由哪幾部分組成:cpu、主機闆、記憶體、電源、主機箱、硬碟、顯示卡、鍵盤、滑鼠、顯示器等。
-
軟體的結構劃分:
(1)C/S結構(Client/Server):用戶端和伺服器端的互動。
特點:伺服器端和相應的用戶端是一個高版本,用戶端的軟體必須更新才能使用伺服器的高版本功能。
例舉:QQ用戶端、阿裡巴巴等。
(2)B/S結構(Browser/Server):浏覽器端和服務端的互動(JavaEE)。
特點:隻要保證電腦存在浏覽器,就可以通路服務端程式。
例舉:大型遊戲、網易新聞等。
-
軟體的劃分
系統軟體:DOS、Linux、Windows、MAC、
應用軟體:用戶端軟體:QQ、office辦公軟體
軟體開發:借助第三方開發工具----->寫相關代碼----->開發一個軟體。
開發工具:notepad++ : 進階記事本。
eclipse 開發工具(必須使用會!!!),半自動化。
idea 開發工具(非常智能,聯想精确),相對eclispe可以提高開發效率。
-
人機互動
方式1:圖形界面化,非常簡單、直覺!
方式2:指令行的方式(得記住相關的操作指令,計算機能夠識别的),需要進入dos控制台輸入相關指令。
例如:
(1)從系統盤符切換到d盤:win+R,鍵入cmd,進入dos,輸入d: 然後按Enter鍵,即可。
(2)鍵入dir并回車,可以羅列出某個盤中的檔案。
(3)進入某個目錄,鍵入cd 目錄名稱
例如:cd D:\千峰學習\千峰課程\day3
(4)回退到根目錄 cd\ 回退下級目錄 cd .
(5)建立目錄(檔案夾) md 目錄名稱
(6)建立檔案 copy con 輸入檔案夾名稱(xxx.txt) 然後回車,輸入檔案内容,并ctrl+Z(終止輸入檔案内容) 再次回車,提示“檔案已複制”。
(7)删除檔案
del 删除單個檔案
rd 删除空目錄
rd /s 目錄(檔案夾)名稱 詢問删除(Y/N)
rd /s /q 目錄(檔案夾)名稱 暴力删除
(8)清屏 cls 檢視ip端口 ipconfig ping其他的ip位址 ping ip位址
Java的環境搭建
-
jdk的安裝(運作jdk-8uXXX-windows-x64.exe) 預設路徑為:C:\Program Files\Java
2.配置 java環境變量
第一步:右擊“此電腦”----->“屬性”------>“進階系統設定”----->“環境變量”
第二步:“系統變量中點選建立”------>“變量名:JAVA_HOME 變量值:C:\Program Files\Java\jdk1.8.0_121”
第三步:“找到path 點選編輯 進入到path變量中 點選建立 輸入%JAVA_HOME%\bin”
第四步:進入dos指令,輸入 java/javac,不報錯,則說明環境變量配置成功。
注意:classpath:臨時環境變量(早期使用) 系統變量名:classpath 變量名:指定某個盤符下的某個目錄的路徑
3.編寫第一個java程式(HelloWorld)
(1)建立.java檔案:右擊建立一個文本文檔,改名為HelloWorld.java,在改名時,彈出警告框時,并點選“是”,才更名成功。
class HelloWorld{ //類
public static void main(String[] args){ //main主函數
System.out.println(“HelloWorld”); //控制台輸出語句
}
}
注意:類名和檔案名保持一緻。
4.編譯
進入dos------>進入.java檔案存在的盤------>cd 檔案夾名稱----->javac HelloWorld.java---->回車----->java HelloWorld---->回車
5.類的闡述
(1)同一個源檔案中可以定義多個類
(2)編譯後,每個類對應一個.class檔案
(3)一個類中,隻能有一個主函數,每個類都可以有自己的主函數
(4)public修飾的類稱為公開類,要求類名必須和檔案名保持一緻,包括大小寫。
(5)一個源檔案中,隻能有一個公開類。
6.JDK JRE JVM的含義和關系
JDK:java的運作環境 JRE:java的開發工具,包含了lib目錄,存儲了一些jar包,一些java的核心類庫。
JVM:java虛拟機
關系:JDK>JRE>JVM
7.注釋
單行注釋 // 給代碼加上解釋說明的文字,可以提高代碼的閱讀性,不可以換行
多行注釋 生成外部文檔:javadoc -d . TestAnnotation.java
注:注釋不參與編譯
關鍵字
1.定義:被Java語言賦予特定的含義單詞,單詞字母全部都是小寫。
2.組成關鍵字的單詞都小寫,例如:class、public、static、void、interface、extends、abstract,資料類型:基本類型資料都是關鍵字,流程控制語句中相關選擇結構/循環結構語句…等。
注意:goto,const這兩個單詞不是關鍵字,作為保留字使用。
辨別符
1.定義:給類、接口、變量、方法起名字的字元序列。
2.辨別符的組成規則:
1)英文大小寫字母 2)數字字元 3)$和_下劃線
注意:不能以數字開頭、不能與關鍵字和保留字重名、嚴格區分大小寫。
3.包(package):檔案夾(目錄) 組成規則:包名全小寫,隻可以使用特殊字元".",并且不以“.”開頭或結尾。
例如:包名:com.qf.teach; com.qf.tech.bj;(全小寫、不以.開頭或結尾)
4. (1)給類、接口起名字:一個單詞,首字母大寫;多個單詞,每個首字母大寫。
(2)給變量、方法起名字:一個單詞,全部小寫;如果是多個單詞,第一個單詞小寫,其餘每個單詞的首字母大寫
(3)給常量起名字:一個單詞,全部大寫;多個單詞,每個單詞大寫且每個單詞之間使用下劃線_連接配接。
常量的概念以及分類
1.定義:在程式的執行過程中,其值發生改變的量。
2.分類:
(1)字面值常量
a.字元串常量:使用雙引号括起來的内容。 例如:“HelloWorld”
b.字元常量:使用單引号括起來的單個内容。 例如:‘A’ ‘a’
c.整數常量:預設為十進制 例如:100 200
d.小數常量:所有的小數。例如:3.1415 12.56
e.布爾常量:隻有兩個值 false,true
f.空常量:null
(2)自定義常量(跟final關鍵字有關,面向對象中講)
注意:如果字元參與運算,需要在ASCII碼表中尋找對應的一個整數值。例如:
‘A’=65 ‘a’=97 ‘0’=48
進制的由來,進制的轉換
1.進制:就是進位制,是人們規定的一種進位方法。 對于任何一種進制–X進制,就表示某一位置上的數運算時是逢X進一位。二進制就是逢二進一,八進制是逢八進一,十進制是逢十進一,十六進制是逢十六進一。
2. 不同進制的組成規則
二進制:由0,1組成。以0b開頭
八進制:由0,1,…7組成。以0開頭
十進制:由0,1,…9組成。整數預設是十進制的
十六進制:由0,1,…,9,a,c,d,e,f組成。以0x開頭
3. 進制轉換
1byte=8bit;1k=1024byte;1M=1024K;1G=1024M;1T=1024G
(1)其他進制轉到十進制:
系數:就是每一位上的資料。
基數:X進制,基數就是X。
權:在右邊,從0開始編号,對應位上的編号即為該位的權。
結果:把系數基數的權次幂相加即可。
例如:将0b100、0100、0x100轉換成十進制
0b100---------->12^2+02+02=4
0100------------>18^2=64
0x100----------->116^2=256
(2)十進制轉到其他進制
規律:除積取餘,直到商為0,餘數取反。
例如:十進制52轉換為二進制、八進制、十六進制
二進制:0b110100 八進制:064 十六進制:0x34
-
8421編碼
是一種快速轉換法,針對二進制和十進制
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
例如:x進制---->y進制
方式一:分布走
(1)x進制------>十進制
(2)十進制----->y進制
方式二:二進制轉八進制
将二進制每三位分開,左邊補零,分别求出來再組合。
有符号位資料表示法(符号位+數值位)
1.步驟:先将這個十進制資料-------->換算成二進制資料-------->寫出原碼------>反碼------>得到補碼
2.正數的原碼、反碼、補碼都相同。最高符号位為0。
3.負數的最高符号位為1。求負數的反碼時,最高符号位不變,數值位按位取反。求負數的補碼時,最高符号位不變,在反碼的末尾+1。
4.如果知道負數的補碼求其原碼時,最高符号位不變,末尾-1,即求得它的反碼,在反碼的基礎上,符号位不變,數值位按位取反,即可得到對應的原碼。
變量和資料類型
1.變量概念:在程式的執行過程中,其值發生改變的量。
2.變量的三要素:(1)資料類型(2)變量名(3)初始化值
3.針對java語言資料類型的劃分:
(1)基本資料類型:
整數資料類型:byte 占1位元組 取值範圍為(-128~127)
short 占2位元組
int 占4位元組(預設類型)
long 占8位元組
浮點類型: float 占4位元組
double 占8位元組(預設類型)
字元型: char 占2位元組
布爾類型: boolean 占1位元組
(2)應用資料類型:數組、類(具體類、抽象類)、接口
4.定義變量的注意事項:
(1).要遵循變量的三要素:
資料類型 變量名 = 初始值;
(2).先定義,但是在使用前必須對其先指派。
(3).Java是一種強類型語言,不能重複定義變量。
(4).同一行上可以定義多個變量,開發過程中不建議使用。
5.類型提升
進行算數運算時:
(1)兩個操作數有一個為double,計算結果提升為double
(2)如果操作數中沒有doubl,有一個float,計算結果提升為float
(3)如果操作數中沒有float,有一個long,計算結果提升為long
(4)如果操作數中沒有long,有一個為int,計算結果提升為int
(5)如果操作數中沒有int,均為short或byte,計算結果仍舊提升為int
特殊:任何類型與String相加(+)時,實為拼接,其結果自動提升為String
6.Java中強制類型轉換:
文法格式: 目标資料類型 變量名 = (目标資料類型)(變量值);
注意:強類型轉換盡量不要使用,會損失資料的精度。
7.變量相加,先判斷類型,然後看是否存在預設類型的提升,最終接收的類型是什麼類型,判斷是否符合,不符合強轉。
常量相加,先相加,然後看其結果是否符合在接收的範圍内,在範圍内正确!不在範圍内,利用二進制補碼截取的方式進行計算。
運算符
1.運算符
I. 算術運算符:兩個操作數進行計算
+(加、求和) -(減、求差) *(乘、求積) /(除、求商) %(模、求餘)
II. 擴充算數運算符:一進制運算符(隻求一個操作數)
++(遞增,變量值+1) --(遞減,變量值-1)
情況一:單獨使用:無論操作數在++或–的前面還是後面,都是自增或自減。
情況二:參與運算:如果++或–在操作數的前面,先自增或自減,再運算;如果操作數在++或–的前面,先運算,再自增或自減。
2.指派運算符:等号右邊指派給等号左邊
=(直接指派) +=(求和後指派) -=(求差後指派) =(求積後指派) /=(求商後指派) %=(求餘後指派)
3.關系運算符:兩個操作數進行比較
>(大于) <(小于) >=(大于等于) <=(小于等于) ==(等于) !=(不等于)
特點:使用比較複合連接配接的表達式,無論是簡單還是複雜,結果都是boolean類型。
4.邏輯運算符:
基本邏輯運算符: 邏輯單與(有0則0,同1則1) 邏輯單或(有1則1,同0則0)
邏輯異或(相同為0,不同為1) 邏輯單非(非真為0,非假為1)
擴充邏輯運算符:&&(語義:與/并且 描述:兩個操作數,同時為真,結果為真)
||(語義:或/或者 描述:兩個操作數,有一個為真,結果為真)
!(語義:非/取反 描述:意為“不是”,真即是假,假即是真)
邏輯&&和邏輯&的差別:
相同點:都是并列關系,有假則假
不同點:邏輯&&存在短路效果,邏輯&&連接配接的表達式,左邊如果為false,右邊的表達式就不執行了。但是邏輯&兩邊都執行。
邏輯||和邏輯|的差別:
相同點:有真則真。
不同點:邏輯||存在短路效果,邏輯 ||連接配接的表達式,左邊如果為true,右邊的表達式就不執行了。但是邏輯|兩邊都執行。
5.位運算符:
(1)位異或(^):一個資料對另一個資料位異或兩次,結果是它本身。
(2)移動符号:<<(左移) >>(右移) >>>(無符号右移)
<<(左移):右邊補齊0,最高符号位舍棄。
結論:将該符号左邊的資料乘以2的移動次幂。
例: 2乘以8 等價于: 2<<3 即:22^3
>>(右移):如果是正數,左邊補齊0,右邊數值位舍棄;如果是負數,左邊補齊1,右邊數值位舍棄。
結論:該數除以2的移動次幂。
例:24>>2 即: 24/2^2
>>>(無符号右移):無論最高位是0還是1,左邊都補齊0。
6.三目(三元)運算符:
格式:(表達式)?執行true的結果:執行false的結果;
控制台輸入
1.程式運作中,可在控制台(終端)手動錄入資料,再讓程式繼續運作。
2.導包文法:import 包名.類名;//将外部class檔案功能引入到自身檔案中。
3.使用順尋:
①導入 java.util.Scanner。
JDK提供的類庫位置:C:\Program Files\Java\jdk1.8.0_121\jre\lib
目前使用java.util.Scanner
②聲明Scanner類型的變量。
格式:Scanner input = new Scanner(System.in);
//提示并接收
System.out.println(“請您輸入:”);
資料類型 變量名 = 對象名.nextInt();
③使用Scanner類中對應的函數(區分類型)
.nextInt(); //獲得整數
.nextDouble(); //獲得小數
.nextLine(); //獲得字元串
.next().charAt(0); //獲得單個字元(這個是先接收為字元串,再将字元串轉為字元)
注意:如果輸入不比對的資料,會産生java.util.InputMismatchException異常。
流程控制語句:
基本if、if else、多重if
選擇結構:
概念:根據已知條件進行邏輯判斷,滿足條件後執行相應操作。
1、基本if選擇結構
I.文法:
If(布爾表達式){
//代碼塊
}
後續代碼……
II.執行流程:
(1)對布爾表達式進行判斷。
(2)結果為true,則先執行代碼塊,再執行後續代碼;結果為false,則跳過代碼塊,直接執行後續代碼。
2、if …… else選擇結構
I.文法:
if(布爾表達式){
//代碼塊1
}else{
//代碼塊2
}
後續代碼……
II.執行流程:
(1)對布爾表達式進行判斷。
(2)結果為 true,則先執行代碼塊1,再退出整個結構,執行後續代碼;結果為false,則先執行代碼塊2,再退出整個結構,執行後續代碼。
3、多重if選擇結構
I.文法:
If(布爾表達式1){
//代碼塊1
}else if(布爾表達式2){
//代碼塊2
}else if(布爾表達式3){
//代碼塊3
}else{
//代碼塊4
}
II.執行流程:
(1)表達式1為true,則執行代碼塊1,再退出整個結構。
(2)表達式2為true,則執行代碼塊2,再退出整個結構。
(3)表達式3為true,則執行代碼塊3,再退出整個結構。
(4)以上均為false,則執行代碼塊4,再退出整個結構。
注意:互相排斥,有一個為true,其他均不再執行,适用于區間判斷(區間條件,遵循從大到小或者從小到大)。
4、嵌套if選擇結構
I.文法:
If(外層表達式){
If(内層表達式){
//内層代碼塊1
}else{
//内層代碼塊2
}
}else{
//外層代碼塊
}
II.執行流程
當外層條件滿足時,在判斷内層條件。
III.注意:
(1)一個選擇結構中,可嵌套另一個選擇結構。
嵌套格式正确的情況下,支援任意組合。
5、分支結構
I.文法:
Switch(變量|表達式){//變量:byte、short、int、char、String(JDK7+)或者表達式
case 值1:
邏輯代碼1;
case 值2:
邏輯代碼2;
case 值n:
邏輯代碼n;
default:
未滿足時的邏輯代碼;
}
II.可判斷的類型:
byte、short、int、char、String(JDK7+)
III.執行流程:
(1)如果變量中的值等于值1,則執行邏輯代碼1.
(2)如果變量中的值等于值2,則執行邏輯代碼2.
(3)如果變量中的值等于值n,則執行邏輯變量n。
如果變量中的值沒有比對的case值時,執行default中的邏輯代碼。
循環結構
1.for循環
(1)文法:
for(初始部分:循環條件;疊代部分){
//循環操作
}
(2)執行流程:
I.首次執行初始部分(僅一次)。
II.對布爾表達式進行判斷,結果為true,則執行邏輯代碼。
III.本次執行完畢後,執行疊代部分,再次判斷,結果仍舊為true,則繼續執行
IV.直至布爾表達式的結果為false時,才會退出循環結構,執行後續代碼。
(3)适用場景:明确循環次數或者明确使用範圍。
(4)案例:列印水仙花數
class ForTest10{
public static void main(String[] args){
//統計所有的水仙花數
int count=0;
int X = 100;
while(X<1000){
int ge = X%10;
int shi = X/10%10;
int bai = X/10/10%10;
int Y=ge*ge*ge+shi*shi*shi+bai*bai*bai;
if(X==Y){
count++;
System.out.println(X);
}
X++;
}
System.out.println("水仙花數共有:"+count);
}
}
2.while循環
(1)文法:
while(布爾表達式){
//邏輯代碼(循環操作);
//步長語句;
}
(2)執行流程:
①先對布爾表達式進行判斷,結果為true,則執行邏輯代碼。
②本次執行完畢後,再次進行判斷,結果仍舊為true,則再次執行邏輯代碼。
(3)循環的組成部分
I.初始部分:用以判斷的變量
II.循環條件:決定是否繼續循環的依據
III.循環操作:單次執行的邏輯代碼或任務
IV.疊代部分:控制循環條件改變的增量
(4)while的特點:
首次即有入口條件,先判斷、再執行,适用于循環次數明确的情況。
(5)擴充格式:
初始化語句;
while(條件表達式){
循環體語句;
步長語句;
}
(6)案例:猜拳遊戲
/*
需求:猜數字遊戲
1.java.lang.Math類:數學運算的類
2.方法:擷取随機數
public static double redom() 取值範圍[0.0-1.0)
鍵盤錄入:
1.手動錄入一個資料,與随機數比較
2.若比随機數大,輸出"猜的大了,重新猜!"
3.若比随機數小,輸出"猜的小了,重新猜!"
4.若和随機數一樣,輸出"恭喜你,猜對了!"
統計猜的次數:
定義一個計數器count
*/
//導包
import java.util.Scanner;
class WhileTest{
public static void main(String[] args){
//擷取一個随機數
int count = 0;
int number = (int)(Math.random()*100+1);
//錄入一個随機數
while(true){
Scanner input = new Scanner(System.in);
//提示并擷取
System.out.println("請您輸入一個數:");
int guess = input.nextInt();
//随機數和錄入資料比較
if(guess>number){
System.out.println("猜的大了,重新輸!");
}else if(guess<number){
System.out.println("猜的小了,重新猜!");
}else{
System.out.println("恭喜你,猜對了!");
break;
}
count++;
}
System.out.println("總共猜了:"+count);
}
}
3.do while循環
(1)文法:
do{
//邏輯代碼(循環操作)
}while(布爾表達式)
(2)執行流程:
I.先執行一次循環操作之後,再進行布爾表達式的判斷。
II.如果結果為true,則再次執行循環操作。
III.如果結果為false,才會退出循環結構,執行後續代碼。
(3)特點:
首次沒有入口條件,先執行,再判斷。
(4)do while 的應用場景
應用場景:适用于循環次數不明确的情況。