項目名:樂編教育
后端架構:springboot+maven+mybatis+mysql
開發(fā)工具:idea
環(huán)境:jdk1.8 、apache-maven-3.6.1、mysql5.7
java1.8Api:https://www.matools.com/api/java8
一、基礎概括
java歷史:
1.java之父:
詹姆斯·高斯林
2.java原名:OAK
3.java體系
①javaSE,標準版,各應用平臺的基礎,桌面開發(fā)和低端商務應用的解決方案。
②javaEE,企業(yè)版,以企業(yè)為環(huán)境而開發(fā)應用程序的解決方案。
③javaME,微型版,致力于消費產(chǎn)品和嵌入式設備的最佳方案。
4.java可以做什么
①開發(fā)桌面應用程序。
②開發(fā)面向Internet的web應用程序。
③提供各行業(yè)的解決方案。
④開發(fā)android手機應用程序。
5.java的特性
①一種面向對象的編程語言。
②一種與平臺無關的語言(根據(jù)JVM實現(xiàn)的)。
③一種健壯性語言。
④具有較高的安全性。
6.java應用程序的運行機制
先編譯(.class),在解釋運行。
7.java程序開發(fā)的三個步驟
①編寫源程序,java源代碼文件。
②編譯源程序,編譯器編譯編譯成java字節(jié)碼文件。
③運行,java虛擬機(JVM)。
1.Java虛擬機——JVM
JVM(Java Virtual Machine ):Java虛擬機,簡稱JVM,是運行所有Java程序的假想計算機,是Java程序的 運行環(huán)境,是Java 具吸引力的特性之一。我們編寫的Java代碼,都運行在 JVM 之上。
跨平臺:任何軟件的運行,都必須要運行在操作系統(tǒng)之上,而我們用Java編寫的軟件可以運行在任何的操作系 統(tǒng)上,這個特性稱為Java語言的跨平臺特性。該特性是由JVM實現(xiàn)的,我們編寫的程序運行在JVM上,而JVM 運行在操作系統(tǒng)上。
解釋:
java虛擬機實際上只是一層接口,一層Java程序和操作系統(tǒng)通訊的接口。java文件編譯生成class文件而java虛擬機就是這些class文件能夠在上面運行的一個平臺,你把class文件看成一個軟件,java虛擬機就是這個軟件可以運行的操作系統(tǒng)。
2.JRE 和 JDK
JRE (Java Runtime Environment) :是Java程序的運行時環(huán)境,包含 JVM 和運行時所需要的 核心類庫 。 JDK (Java Development Kit):是Java程序開發(fā)工具包,包含 JRE 和開發(fā)人員使用的工具。
我們想要運行一個已有的Java程序,那么只需安裝 JRE 即可。 我們想要開發(fā)一個全新的Java程序,那么必須安裝 JDK 。
3.jdk下載與配置安裝
Jdk1.8的下載:
<u>https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html</u>
配置環(huán)境變量:
<u>https://www.cnblogs.com/evolve/archive/2019/11/11/11837869.html</u>
1.HelloWord入門小案列
①Java程序開發(fā)三步驟:編寫、編譯、運行
javac.exe 編譯器
java.exe 解釋器
②正常來說,我們編寫的代碼,jvm是看不懂得,要想他看懂,我們得把代碼變成.class(字節(jié)碼)文件
我們在D盤根目錄下新建一個記事本,修改名字為HelloWord,后綴名字為.java 輸入內容為:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("你好世界~");
}
}
打開dos命令,在黑窗口中輸入javac HelloWord.java;這個時候呢,去D盤目錄下查看,會發(fā)現(xiàn)神奇的多出了一個.class文件,沒錯!就是jvm能讀懂的東西啦!
這時,我們在黑窗口輸入 java HelloWord 那么我們將看到我們剛才編寫的代碼的輸出內容:"你好世界~"
至此,你已經(jīng)成功的編寫一個可被jvm識別的java代碼了
補充:
啟動: Win+R,輸入cmd回車
切換盤符 盤符名稱:
進入文件夾 cd 文件夾名稱
進入多級文件夾 cd 文件夾1\文件夾2\文件夾3
返回上一級 cd ..
直接回根路徑 cd \
查看當前內容 dir
清屏 cls
退出 exit
2.編譯和運行
① 編譯:是指將我們編寫的Java源文件翻譯成JVM認識的class文件,在這個過程中, javac 編譯器會檢查我們 所寫的程序是否有錯誤,有錯誤就會提示出來,如果沒有錯誤就會編譯成功。
②運行:是指將 class文件 交給JVM去運行,此時JVM就會去執(zhí)行我們編寫的程序了
3.main方法
main方法:稱為主方法。寫法是固定格式不可以更改。main方法是程序的入口點或起始點,無論我們編寫多 少程序,JVM在運行的時候,都會從main方法這里開始執(zhí)行。
4.關鍵字
是指在程序中,Java已經(jīng)定義好的單詞,具有特殊含義。 HelloWorld案例中,出現(xiàn)的關鍵字有 public 、 class 、 static 、 void 等,這些單詞已經(jīng)被 Java定義好,全部都是小寫字母,在我們即將使用的編譯器會有顏色區(qū)分哦~
5.命名規(guī)范
①標識符:
是指在程序中,我們自己定義內容。比如類的名字、方法的名字和變量的名字等等,都是標識符。 HelloWorld案例中,出現(xiàn)的標識符有類名字 HelloWorld 。
②命名規(guī)則:
- 標識符可以包含 英文字母26個(區(qū)分大小寫) 、 0-9數(shù)字 、 $(美元符號) 和 _(下劃線) 。
- 標識符不能以數(shù)字開頭。
- 標識符不能是關鍵字。
③命名規(guī)范:
類名規(guī)范:首字母大寫,后面每個單詞首字母大寫(大駝峰式)。
方法名規(guī)范: 首字母小寫,后面每個單詞首字母大寫(小駝峰式)。
變量名規(guī)范:全部小寫。
4.idea的安裝
idea的下載:
https://www.jetbrains.com/idea/download/#section=windows
idea的安裝:
https://blog.csdn.net/qq_21225505/article/details/81285745?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
idea快捷鍵:
Alt+Enter 導入包,自動修正代碼
Ctrl+Alt+L 格式化代碼
Ctrl+/ 單行注釋
Ctrl+Shift+/ 選中代碼注釋,多行注釋,再按取消注釋
Alt+Ins 自動生成代碼,toString,get,set等方法
idea工具的使用:
https://blog.csdn.net/daponi/article/details/94504677
idea中配置jdk:
https://blog.csdn.net/qq_28289405/article/details/82698856
二、基礎語法
1.常量
常量:是指在Java程序中固定不變的數(shù)據(jù)
示例:
public class ConstantDemo {
public static void main(String[] args){
//輸出整數(shù)常量
System.out.println(123);
//輸出小數(shù)常量
System.out.println(0.125);
//輸出字符常量
System.out.println('A');
//輸出布爾常量
System.out.println(true);
//輸出字符串常量
System.out.println("你好Java");
}
2.變量和數(shù)據(jù)類型
變量:常量是固定不變的數(shù)據(jù),那么在程序中可以變化的量稱為變量。
Java的數(shù)據(jù)類型分為兩大類:
- 基本數(shù)據(jù)類型:包括 整數(shù) 、 浮點數(shù) 、 字符 、 布爾 。
- 引用數(shù)據(jù)類型:包括 字符串 、類 、 數(shù)組 、 接口 。
基本數(shù)據(jù)類型如下:
1.變量定義的格式包括三個要素: 數(shù)據(jù)類型 、 變量名 、 數(shù)據(jù)值
格式:數(shù)據(jù)類型 變量名 = 數(shù)據(jù)值;
變量名稱:在同一個大括號范圍內,變量的名字不可以相同。
變量賦值:定義的變量,不賦值不能使用。
1字節(jié)=8位
public class Variable {
public static void main(String[] args){
//定義字節(jié)型變量
byte b = 100;
System.out.println(b);
//定義短整型變量
short s = 1000;
System.out.println(s);
//定義整型變量
int i = 123456;
System.out.println(i);
//定義長整型變量
long l = 12345678900L;
System.out.println(l);
//定義單精度浮點型變量
float f = 5.5F;
System.out.println(f);
//定義雙精度浮點型變量
double d = 8.5;
System.out.println(d);
//定義布爾型變量
boolean bool = false;
System.out.println(bool);
//定義字符型變量
char c = 'A';
System.out.println(c);
}
}
2.ASCII
將所有的英文字母,數(shù)字,符號都和十進制進行了對應,因此產(chǎn)生了世界上第一張編碼表ASCII 地址:http://ascii.911cha.com/
在char類型和int類型計算的過程中,char類型的字符先查詢編碼表,得到97,再和1求和,結果為98。char類型提升 為了int類型。char類型內存2個字節(jié),int類型內存4個字節(jié)。
public static void main(String[] args) {
//字符類型變量
char c = 'a';
int i = 1;
//字符類型和int類型計算
System.out.println(c+i);//輸出結果是98
}
自動轉換:
將取值范圍小的類型 自動提升為 取值范圍大的類型
準換規(guī)則:
范圍小的類型向范圍大的類型提升, byte、short、char 運算時直接提升為 int
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
強制轉換:
格式:數(shù)據(jù)類型 變量名 = (數(shù)據(jù)類型)被轉數(shù)據(jù)值
例子:
//將 1.5 賦值到 int 類型,代碼修改為
// double類型數(shù)據(jù)強制轉成int類型,直接去掉小數(shù)點。
int i = (int)1.5;
/**當一個 short 類型與 1 相加,我們知道會類型提升,
但是還想給結果賦值給short類型變量,就需要強制轉換*/
public static void main(String[] args) {
//short類型變量,內存中2個字節(jié)
short s = 1;
/* 出現(xiàn)編譯失敗
s和1做運算的時候,1是int類型,s會被提升為int類型
s+1后的結果是int類型,將結果在賦值會short類型時發(fā)生錯誤
short內存2個字節(jié),int類型4個字節(jié)
必須將int強制轉成short才能完成賦值 */
s = s + 1;
//編譯失敗
s = (short)(s+1);
//編譯成功
}
3.運算符
1.算數(shù)運算符
Java中,整數(shù)使用以上運算符,無論怎么計算,也不會得到小數(shù)。
1.++ 運算,變量自己增長1。反之, -- 運算,變量自己減少1,用法與 ++ 一致。
①獨立運算: 變量在獨立運算時, 前++ 和 后++ 沒有區(qū)別 。
- 變量 前++ :例如 ++i 。
- 變量 后++ :例如 i++ 。
②混合運算: 和其他變量放在一起, 前++ 和 后++ 就產(chǎn)生了不同。
- 變量 前++ :變量a自己加1,將加1后的結果賦值給b,也就是說a先計算。a和b的結果都是2。
public static void main(String[] args) {
int a = 1;
int b = ++a;
System.out.println(a);//計算結果是2
System.out.println(b);//計算結果是2
}
- 變量 后++ :變量a先把自己的值1,賦值給變量b,此時變量b的值就是1,變量a自己再加1。a的結果是2,b 的結果是1
public static void main(String[] args) {
int a = 1;
int b = a++;
System.out.println(a);//計算結果是2
System.out.println(b);//計算結果是1
}
2.+ 符號在字符串中的操作:
- 符號在遇到字符串的時候,表示連接、拼接的含義。
- "a"+"b"的結果是“ab”,連接含義
public static void main(String[] args){
System.out.println("5+5="+5+5);//輸出5+5=55
}
2.賦值運算符
賦值運算符,就是將符號右邊的值,賦給左邊的變量。
public static void main(String[] args){
int i = 5;
i+=5;//計算方式 i=i+5 變量i先加5,再賦值變量i
System.out.println(i); //輸出結果是10
}
3.比較運算符
比較運算符,是兩個數(shù)據(jù)之間進行比較的運算,運算結果都是布爾值 true 或者 false 。
public static void main(String[] args) {
System.out.println(1==1);//true
System.out.println(1<2);//true
System.out.println(3>4);//false
System.out.println(3<=4);//true
System.out.println(3>=4);//false
System.out.println(3!=4);//true
}
4.邏輯運算符
邏輯運算符,是用來連接兩個布爾類型結果的運算符,運算結果都是布爾值 true 或者 false
public static void main(String[] args) {
System.out.println(true && true);//true
System.out.println(true && false);//false
System.out.println(false && true);//false,右邊不計算
System.out.println(false || false);//falase
System.out.println(false || true);//true
System.out.println(true || false);//true,右邊不計算
System.out.println(!false);//true
}
5.三元運算符
格式:
數(shù)據(jù)類型 變量名 = 布爾類型表達式?結果1:結果2
三元運算符計算方式:
- 布爾類型表達式結果是true,三元運算符整體結果為結果1,賦值給變量。
- 布爾類型表達式結果是false,三元運算符整體結果為結果2,賦值給變量。
public static void main(String[] args) {
int i = (1==2 ? 100 : 200);
System.out.println(i);//200
int j = (3<=4 ? 500 : 600);
System.out.println(j);//500
}