天天看點

Java知識點總結Java的環境概述與環境搭建

第一周學習總結

  • Java的環境概述與環境搭建
    • 概述
    • Java的環境搭建
    • 關鍵字
    • 辨別符
    • 常量的概念以及分類
    • 進制的由來,進制的轉換
    • 有符号位資料表示法(符号位+數值位)
    • 變量和資料類型
    • 運算符
    • 控制台輸入
    • 流程控制語句:
    • 循環結構

Java的環境概述與環境搭建

概述

  1. 什麼是程式?

    程式是為了模拟現實世界,解決現實問題而使用計算機語言編寫一系列有序的指定集合。

  2. Java的特點

    (1)面向對象:貼近人類思維,模拟現實世界,解決現實問題。

    (2)簡單性:自動記憶體管理機制,不易造成記憶體溢出,簡化流程處理,語義清晰。

    (3)跨平台:跨作業系統和跨伺服器。

  3. 電腦都由哪幾部分組成:cpu、主機闆、記憶體、電源、主機箱、硬碟、顯示卡、鍵盤、滑鼠、顯示器等。
  4. 軟體的結構劃分:

    (1)C/S結構(Client/Server):用戶端和伺服器端的互動。

    特點:伺服器端和相應的用戶端是一個高版本,用戶端的軟體必須更新才能使用伺服器的高版本功能。

    例舉:QQ用戶端、阿裡巴巴等。

    (2)B/S結構(Browser/Server):浏覽器端和服務端的互動(JavaEE)。

    特點:隻要保證電腦存在浏覽器,就可以通路服務端程式。

    例舉:大型遊戲、網易新聞等。

  5. 軟體的劃分

    系統軟體:DOS、Linux、Windows、MAC、

    應用軟體:用戶端軟體:QQ、office辦公軟體

    軟體開發:借助第三方開發工具----->寫相關代碼----->開發一個軟體。

    開發工具:notepad++ : 進階記事本。

    eclipse 開發工具(必須使用會!!!),半自動化。

    idea 開發工具(非常智能,聯想精确),相對eclispe可以提高開發效率。

  6. 人機互動

    方式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的環境搭建

  1. 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

  1. 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 的應用場景

應用場景:适用于循環次數不明确的情況。