第一章 Java基礎知識
1.1 基礎常識
常用的DOS指令
盤符:: 切換盤符
cd 檔案夾名/路徑 :進入指定檔案夾
cd … : 進入上級目錄
cd / : 進入根目錄
dir :檢視目錄
md 檔案名 :建立檔案夾
copy con 檔案名 : 建立檔案
echo 檔案内容(ctrl z) 檔案名 : 建立檔案
rd 檔案名 : 删除空檔案夾
rd /s : 詢問删除檔案夾
rd /s /q : 暴力删除檔案夾
del : 删除檔案
ipconfig : 檢視ip
cls :清屏
exit :退出dos指令行
1.2 Java語言概述
java語言是面向對象的,跨平台的語言,java編寫的程式可以運作在任何的作業系統上,每一個作業系統上都有相應的不同版本的jvm虛拟機。
jdk : java開發工具包,包括jre和開發所需的工具包
jre : Java運作環境,包括jvm和java雲新房所需要的核心類庫
jvm : java虛拟機(一個假想計算機,可處理java程式)
java語言的執行機制: 将源檔案(*.java)先編譯成平台中立的位元組碼檔案(.class),再将位元組碼檔案進行 解釋執行
1.3 Java語言的環境搭建
配置環境變量
JAVA_HOME:Java相關環境執行指令時需要 的目錄。(D:\Java\jdk1.8.0_162)
path:windows系統執行外部指令時要搜尋的路徑,上移到最頂層(%JAVA_HOME%\bin)
path是windows系統執行指令時要搜尋的路徑。配置path的目的是為了在控制台的任何檔案路徑下,都可以調用jdk指定目錄下的所有指令
檢驗是否成功 :win+r 輸入cmd 打開控制台 :
輸入javac –version 和java -version
1.4 Java的第一個程式HelloWord
class FirstTest{
public static void main(String[] args){
System.out.println("HelloWorld!");
}
}s
1.5 注釋
單行注釋 //
多行注釋
文檔注釋
第二章 資料類型
2.1關鍵字
關鍵字是指被java語言賦予的,具有特定含義的單詞。如class,static,public等。
注意事項:
goto和const這兩個作為保留字使用,不是關鍵字
2.2 辨別符
1.針對包,類,接口,方法,變量,常量等起名字的字元序列;
2.辨別符的組成:
1)26個英文字母(大小寫)
2)數字字元
3)符号(下劃線)
4_$符号
5)嚴格區分大小寫的
3.給類,接口起名字是相同:
如果是一個單詞:首字母大寫,其餘小寫
如果是多個單詞組成:每一個單詞首字母都大寫,其餘小寫(大駝峰命名法)
4.給方法和變量起名字的規則:
如果是單個單詞 :字母全部小寫
如果是多個單詞:第一個單詞字母全部小寫,從第二個單詞開始,每個單詞首字母大寫,其餘小寫(小駝峰命名法)
5.給常量命名的規則:(推薦多個單詞)
如果是單個單詞:字母全部大寫
如果是多個單詞:每個單詞字母大寫,單詞和單詞使用下劃線隔開
2.3 常量
在程式執行過程中,其值不發生改變的量
1.分類
1)字面值常量
整數常量、小數常量、字元常量、字元串常量、布爾常量、空常量
//整數常量
System.out.println(100) ;
//小數常量
System.out.println(3.1415926) ;
//字元串常量
System.out.println("hellWorld") ;
//字元常量
//當字元單獨使用的時候,直接字元本身'a','A','0'
//但是如果字元參與運算:找一個對應的ASCII碼表的固定值
System.out.println('a') ;
System.out.println('A') ;
System.out.println('0') ;
//'a':97 'A':65 '0':48
System.out.println('a'+1) ;//'a'---->ASCII碼表的值 97 b:98
System.out.println('A'+1) ;//'A' :65 B:66
System.out.println('0'+1) ;//'0':48 '1':49
//布爾常量
System.out.println(true) ;
System.out.println(false) ;
//空常量
String s = null ;
System.out.println(s) ;
2)自定義常量
2.進制也屬于常量
2.4 變量
在程式執行過程中其值發生改變的量。
1.分類 :
1)基本資料類型
整數類型(預設int):int、short、long、byte
注:long m=12L;
浮點類型(預設double):float、double
注:float f=3.14F;
字元類型 :char
布爾類型:boolean
2)引用資料類型
2.變量的三要素:
1)資料類型
2)變量名稱
3)初始化值
3.定義變量的注意事項:
1)同一個變量不能重複定義
2)一行也可以定義多個變量
3)變量可以直接初始化
4.注 :
1)變量要進行運算,必須保證資料類型一緻
2)boolean類型不參與類型轉換
5.顯性轉換:大類型轉換為小類型
隐式轉換:小類型轉換為大類型,char、byte、short在參與運算的時候會自動轉換為int型
byte的取值範圍是-128~127
2.5 常見進制及其互相轉換
1.常見進制:二進制,八進制,十進制,十六進制
二進制:由0b開頭
八進制:0-7組成,以0開頭
十進制 :預設進制
十六進制 :由0-9及a-f組成,以0x開頭
2.進制之間的互相轉換
1)二進制-八進制
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-cWPgHMom-1626005448401)(D:\QF_workspace\第一章 Java基礎知識.assets\image-20210710143655997.png)]
2)二進制-十進制
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-UaI2Yg04-1626005448403)(D:\QF_workspace\第一章 Java基礎知識.assets\image-20210710144216005.png)]
第三章 運算符
3.1 邏輯運算符
1.基本邏輯運算符
邏輯單與: & 并列關系(滿足全部條件)
有false,則false
邏輯單或: | 或的關系(滿足一個條件即可)
有true,則true
邏輯異或: ^
相同則為false,不同則為true
邏輯非: ! 非true,則false;非false則true
偶數個非是他本身
2.擴充的邏輯運算符
邏輯雙與&&
邏輯雙或:||
邏輯單與&和邏輯雙與&&的差別?
共同點:都是能夠表述"并列"關系
不同點: 邏輯單與&:無論左邊的表達式是true還是false,右邊都要執行
邏輯雙與&&:具有短路效果,左邊達式如果是false,則右邊就不執行了
邏輯雙||: 左邊的表達式如果是true,則右邊不執行了
隻要有邏輯并列判斷,優先采用的邏輯雙與&&(或的關系判斷:使用雙或||)
執行效率高!
3.2位運算符
位運算操作的都是具體的資料值
基本的位運算符号:
1.位與: & 有0,則0
3 & 4
3 00000000 00000000 00000000 00000011
4 00000000 00000000 00000000 00000100
& -------------------------------------------------
00000000 00000000 00000000 00000000
結果:0
2.位或: | 有1,則1
3 | 4
3 00000000 00000000 00000000 00000011
4 00000000 00000000 00000000 00000100
| -------------------------------------------------
00000000 00000000 00000000 00000111
結果:7
3.位異或: ^ 相同則為0,不同則為1 (一個資料被另一個資料位異或兩次,其值是他本身)
3 00000000 00000000 00000000 00000011
4 00000000 00000000 00000000 00000100
^ -------------------------------------------------
00000000 00000000 00000000 00000111
結果:7
4.反碼 : ~:按位取反:0變1,1變0
~3
00000000 00000000 00000000 00000011 (補碼進行計算)
~
----------------------------------------------------
11111111 11111111 11111111 11111100 (補碼)
最高符号位 數值位
1 1111111 11111111 11111111 11111100 補碼
- 1
---------------------------------------------------------------------
1 1111111 11111111 11111111 11111011 反碼
1 0000000 00000000 00000000 00000100 原碼
結果:-4
其他的運算符号:位移符号
<<:左移動
左移的特點:
<<:将左邊的資料乘以2的移動次幂
>>:右移動
右移的特點:
>>:将左邊的資料除以2的移動次幂
>>>:無符号右移
3.3 三目運算符
格式:
(表達式)? 執行true的結果:執行false的結果;
執行流程:
判斷表達式是否成立,如果成立則執行第一個
如果不成立,則執行第二個
3.4 鍵盤錄入
jdk類:java.util.Scanner :一個簡單的文本掃描器
使用步驟
1.導包: 在java語言中:隻要不是java.lang包下的類都需要導入
import java.util.Scanner;
2.固定格式: 建立鍵盤錄入對象(文本掃描器對象)
Scanner 對象名 = new Scanner(System.in) ;
3.開始錄入資料:
public int nextInt():錄入下一個int類型
int 變量名 = 對象名.nextInt() ;
java.util.Scanner類中:提供一個功能:
public String nextLine();錄入String類型
4.使用變量
注:鍵盤錄入的細節:
如果先錄入int,在錄入String,會漏掉第二個資料String
原因就是 輸入回車符号-->才能錄入資料;回車符号---> (換行)
方案1:在錄入字元串之前,新建立一個鍵盤錄入對象
方案2:Scanner類提供了這個功能:
public String next():錄入一個字元串 (非正式用法)
第四章 流程控制
流程控制語句:
1.順序結構語句
進入到主程式之後,main方法被jvm調用之後
代碼依次由上而下進行執行!
2.選擇結構語句
if語句
switch語句
3.循環結構
for
while
do-while語句
4.1 順序結構
代碼依次由上而下進行執行
4.2 選擇結構
1.if語句
格式1:
if(表達式){
語句;
}
執行流程:
1)先判斷表達式是否成立,
2)如果成立,執行語句内容
3)不成立則不執行
格式1是針對單個條件進行判斷
格式2:
if(表達式){
語句1;
}else{
語句2;
}
執行流程:
1)首先判斷表達式是否成立,
2)如果成立,則執行語句1;
3)不成立執行語句2
格式2是針對兩個條件進行判斷
if格式2和三元運算符的差別:
if語句格式2:相對三元運算符:範圍更大:流程控制語句,既可以操作輸出語句也可以操作具體的資料值
三元運算符:隻能操作具體的資料(int,String字元串資料...)
三元能夠實作的,一定能夠使用if格式2
但是反之,if能夠實作,三元運算符不一定能夠實作
一般采用if格式2.
if格式2的嵌套
if(表達式1){
if(表達式2){
語句1;
}else{
語句2;
}
}else{
if(表達式3){
語句3;
}else{
語句4;
}
}
針對多個條件進行判斷
格式3
針對多種情況進行判斷
if(表達式1){
語句1;
}else if(表達式2){
語句2;
...
}else{
語句n;
}
執行流程:
1)首先判斷表達式1是否成立;如果成立,則執行語句1;
2)不成立,繼續判斷表達式2是否成立,成立,執行語句2
...
...
如果上面都不成立,最終執行else裡面語句;
2.switch語句
表達格式:
switch(表達式){
case 值1:
語句1;
break;
case 值2:
語句2;
break;
...
default:
語句n;
break;
}
執行流程:
1.使用switch表達式的值與case值比對
2.若與case值比對,則執行相應的case語句
3.若有break,則直接跳出switch
若沒有,則繼續往下執行
4.若switch表達式的值與case值沒有比對的,則執行default
注意事項:
1.case值隻能是常量,不能是變量
2.case語句後必須要有break,若沒有,會有“case穿透”、
3.default語句可以在程式的任何一個地方
switch語句中的表達式可以是什麼樣的資料類型:
基本資料:int,byte,short,char
JDK5以後可以跟枚舉 enum
JDK7以後可以跟String類型
4.3 循環結構
1.for循環
for(條件1;條件2;條件3)
{
循環體;
}
執行順序:先執行條件一,再看條件一是否滿足條件二的判斷,如果滿足則進入循環,反之則不進入循環,如果進入循環裡則執行循環體裡面的内容,最後再執行條件三。
一般for循環樣式為
for(var i=0;i<10;i++){
//循環體
}
雙層for循環
for (條件一; 條件二; 條件三) {
//循環體
for (條件四; 條件五; 條件六) {
//循環體二
}
}
2.while循環
while (條件) { 滿足條件就執行 }
注:因為滿足條件就執行,是以我們寫的時候一定要注意,就是設定一個邊界值,不然就一直循環下去了
3.do while循環
do
{
循環體;
}while(條件)
跟while循環相似,隻是do while循環是先執行一遍循環體,再判斷條件,若條件成立則繼續執行。
結構
1.for循環
for(條件1;條件2;條件3)
{
循環體;
}
執行順序:先執行條件一,再看條件一是否滿足條件二的判斷,如果滿足則進入循環,反之則不進入循環,如果進入循環裡則執行循環體裡面的内容,最後再執行條件三。
一般for循環樣式為
for(var i=0;i<10;i++){
//循環體
}
雙層for循環
for (條件一; 條件二; 條件三) {
//循環體
for (條件四; 條件五; 條件六) {
//循環體二
}
}
2.while循環
while (條件) { 滿足條件就執行 }
注:因為滿足條件就執行,是以我們寫的時候一定要注意,就是設定一個邊界值,不然就一直循環下去了
3.do while循環
do
{
循環體;
}while(條件)
跟while循環相似,隻是do while循環是先執行一遍循環體,再判斷條件,若條件成立則繼續執行。