## 1. Java概述
### 1.1 Java語言背景介紹(了解)
語言:人與人交流溝通的表達方式
計算機語言:人與計算機之間進行信息交流溝通的一種特殊語言
Java語言是美國Sun公司(Stanford University Network)在1995年推出的計算機語言
Java之父:詹姆斯·高斯林(James Gosling)
2009年,Sun公司被甲骨文公司收購,所以我們現在訪問oracle官網即可:[https://www.oracle.com](https://www.oracle.com/)
java語言的三個版本:
? JavaSE: Java 語言的(標準版),用于桌面應用的開發,是其他兩個版本的基礎
? JavaME: Java 語言的(小型版),用于嵌入式消費類電子設備
? JavaEE: Java 語言的(企業版),用于 Web 方向的網站開發
### 1.2 Java語言跨平臺原理(理解)
Java程序并非是直接運行的,Java編譯器將Java源程序編譯成與平臺無關的字節碼文件(class文件),然后由Java虛擬機(JVM)對字節碼文件解釋執行。所以在不同的操作系統下,只需安裝不同的Java虛擬機即可實現java程序的跨平臺。
### 1.3 JRE和JDK(記憶)
JVM(Java Virtual Machine),Java虛擬機
JRE(Java Runtime Environment),Java運行環境,包含了JVM和Java的核心類庫(Java API)
JDK(Java Development Kit)稱為Java開發工具,包含了JRE和開發工具
總結:我們只需安裝JDK即可,它包含了java的運行環境和虛擬機。
### 1.4 JDK的下載和安裝(應用)
#### 1.4.1 下載
通過官方網站獲取JDK
[http://www.oracle.com](http://www.oracle.com/)
**注意**:針對不同的操作系統,需要下載對應版本的JDK。
#### 1.4.2 安裝
傻瓜式安裝,下一步即可。但默認的安裝路徑是在C:\Program Files下,為方便統一管理建議修改安裝路徑,將與開發相關的軟件都安裝到一個目錄下,例如:E:\develop。
**注意**:安裝路徑不要包含中文或者空格等特殊字符(使用純英文目錄)。
#### 1.4.3 JDK的安裝目錄介紹
| 目錄名稱 | 說明 |
| -------- | ------------------------------------------------------------ |
| bin | 該路徑下存放了JDK的各種工具命令。javac和java就放在這個目錄。 |
| conf | 該路徑下存放了JDK的相關配置文件。 |
| include | 該路徑下存放了一些平臺特定的頭文件。 |
| jmods | 該路徑下存放了JDK的各種模塊。 |
| legal | 該路徑下存放了JDK各模塊的授權文檔。 |
| lib | 該路徑下存放了JDK工具的一些補充JAR包。 |
## 2. 第一個演示程序
### 2.1 常用DOS命令(應用)
在接觸集成開發環境之前,我們需要使用命令行窗口對java程序進行編譯和運行,所以需要知道一些常用DOS命令。
1、打開命令行窗口的方式:win + r打開運行窗口,輸入cmd,回車。
2、常用命令及其作用
| 操作 | 說明 |
| ------------------ | --------------------------------- |
| 盤符名稱: | 盤符切換。E:回車,表示切換到E盤。 |
| dir | 查看當前路徑下的內容。 |
| cd 目錄 | 進入單級目錄。cd itheima |
| cd .. | 回退到上一級目錄。 |
| cd 目錄1\目錄2\... | 進入多級目錄。cd itheima\JavaSE |
| cd \ | 回退到盤符目錄。 |
| cls | 清屏。 |
| exit | 退出命令提示符窗口。 |
### 2.2 Path環境變量的配置(應用)
#### 2.2.1 為什么配置環境變量
開發Java程序,需要使用JDK提供的開發工具(比如javac.exe、java.exe等命令),而這些工具在JDK的安裝目錄的bin目錄下,如果不配置環境變量,那么這些命令只可以在該目錄下執行。我們不可能把所有的java文件都放到JDK的bin目錄下,所以配置環境變量的作用就是可以使bin目錄下的java相關命令可以在任意目錄下使用。
### 2.3 HelloWorld案例(應用)
HelloWorld案例是指在計算機屏幕上輸出“HelloWorld”這行文字。
各種計算機語言都習慣使用該案例作為第一個演示案例。
#### 2.3.1 Java程序開發運行流程
開發Java程序,需要三個步驟:編寫程序,編譯程序,運行程序。
#### 2.3.2 HelloWorld案例的編寫
1、新建文本文檔文件,修改名稱為HelloWorld.java。
2、用記事本打開HelloWorld.java文件,輸寫程序內容。
~~~java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
~~~
#### 2.3.3 HelloWorld案例的編譯和運行
存文件,打開命令行窗口,將目錄切換至java文件所在目錄,編譯java文件生成class文件,運行class文件。
> 編譯:javac 文件名.java
>
> 范例:javac HelloWorld.java
>
> 執行:java 類名
>
> 范例:java HelloWorld
### 2.4 HelloWorld案例詳解(理解)

### 2.5 HelloWorld案例常見問題(理解)
#### 2.5.1 BUG
在電腦系統或程序中,隱藏著的一些未被發現的缺陷或問題統稱為bug(漏洞)。
#### 2.5.2 BUG的解決
1、具備識別BUG的能力:多看
2、具備分析BUG的能力:多思考,多查資料
3、具備解決BUG的能力:多嘗試,多總結
#### 2.5.3 HelloWorld案例常見問題
1、非法字符問題。Java中的符號都是英文格式的。
2、大小寫問題。Java語言對大小寫敏感(區分大小寫)。
3、在系統中顯示文件的擴展名,避免出現HelloWorld.java.txt文件。
4、編譯命令后的java文件名需要帶文件后綴.java
5、運行命令后的class文件名(類名)不帶文件后綴
### 2.6 Notepad++軟件的安裝和使用(應用)
#### 2.6.1 什么要使用Notepad++軟件
Notepad++功能比windows中的自帶記事本功能強大,除了可以用來制作一般的純文字說明文件,也十分適合編寫計算機程序代碼。Notepad++有行號,能夠快速定位問題位置,還有語法高亮度顯示、代碼折疊等功能。而且它是免費的。
#### 2.6.2 Notepad++軟件安裝
安裝:傻瓜式安裝,一直下一步即可。建議也安裝到統一的開發軟件目錄下,比如E:\develop。
#### 2.6.3Notepad++軟件配置
安裝完畢之后,為了使用方便,做一個簡單的配置:修改默認語言和編碼。
## 3. java基礎語法
### 3.1 注釋(理解)
注釋是對代碼的解釋和說明文字,可以提高程序的可讀性,因此在程序中添加必要的注釋文字十分重要。Java中的注釋分為三種:
單行注釋。單行注釋的格式是使用//,從//開始至本行結尾的文字將作為注釋文字。
~~~java
// 這是單行注釋文字
~~~
多行注釋。多行注釋的格式是使用/* 和 */將一段較長的注釋括起來。
~~~java
/*
這是多行注釋文字
這是多行注釋文字
這是多行注釋文字
*/
注意:多行注釋不能嵌套使用。
~~~
文檔注釋。文檔注釋以`/**`開始,以`*/`結束。(以后講)
### 3.2 關鍵字(理解)
關鍵字是指被java語言賦予了特殊含義的單詞。
關鍵字的特點:
? 關鍵字的字母全部小寫。
? 常用的代碼編輯器對關鍵字都有高亮顯示,比如現在我們能看到的public、class、static等。
### 3.3 常量(應用)
常量:在程序運行過程中,其值不可以發生改變的量。
Java中的常量分類:
? 字符串常量 用雙引號括起來的多個字符(可以包含0個、一個或多個),例如"a"、"abc"、"中國"等
? 整數常量 整數,例如:-10、0、88等
? 小數常量 小數,例如:-5.5、1.0、88.88等
? 字符常量 用單引號括起來的一個字符,例如:'a'、'5'、'B'、'中'等
? 布爾常量 布爾值,表示真假,只有兩個值true和false
? 空常量 一個特殊的值,空值,值為null
除空常量外,其他常量均可使用輸出語句直接輸出。
~~~java
public class Demo {
public static void main(String[] args) {
System.out.println(10); // 輸出一個整數
System.out.println(5.5); // 輸出一個小數
System.out.println('a'); // 輸出一個字符
System.out.println(true); // 輸出boolean值true
System.out.println("歡迎來到黑馬程序員"); // 輸出字符串
}
}
~~~
### 3.4 變量的介紹(理解)
變量的定義格式:
? 數據類型 變量名 = 數據值;
? 數據類型:為空間中存儲的數據加入類型限制。整數?小數?
? 變量名:自己要為空間起的名字,沒有難度
? 數據值: 空間中要存儲的數值,沒有難度
### 3.5 數據類型(應用)
#### 3.5.1 計算機存儲單元
我們知道計算機是可以用來存儲數據的,但是無論是內存還是硬盤,計算機存儲設備的最小信息單元叫“位(bit)”,我們又稱之為“比特位”,通常用小寫的字母”b”表示。而計算機中最基本的存儲單元叫“字節(byte)”,
通常用大寫字母”B”表示,字節是由連續的8個位組成。
除了字節外還有一些常用的存儲單位,其換算單位如下:
1B(字節) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
#### 3.5.2 Java中的數據類型
Java是一個強類型語言,Java中的數據必須明確數據類型。在Java中的數據類型包括基本數據類型和引用數據類型兩種。
Java中的基本數據類型:
| 數據類型 | 關鍵字 | 內存占用 | 取值范圍 |
| :------- | ------------ | -------- | :----------------------------------------------------------- |
| 整數類型 | byte | 1 | -128~127 |
| | short | 2 | -32768~32767 |
| | int(默認) | 4 | -2的31次方到2的31次方-1 |
| | long | 8 | -2的63次方到2的63次方-1 |
| 浮點類型 | float | 4 | 負數:-3.402823E+38到-1.401298E-45 正數: 1.401298E-45到3.402823E+38 |
| | double(默認) | 8 | 負數:-1.797693E+308到-4.9000000E-324 正數:4.9000000E-324 到1.797693E+308 |
| 字符類型 | char | 2 | 0-65535 |
| 布爾類型 | boolean | 1 | true,false |
說明:
? e+38表示是乘以10的38次方,同樣,e-45表示乘以10的負45次方。
? 在java中整數默認是int類型,浮點數默認是double類型。
### 3.6 變量(應用)
#### 3.6.1 變量的定義
變量:在程序運行過程中,其值可以發生改變的量。
從本質上講,變量是內存中的一小塊區域,其值可以在一定范圍內變化。
變量的定義格式:
```java
數據類型 變量名 = 初始化值; // 聲明變量并賦值
int age = 18;
System.out.println(age);
```
或者(擴展)
```java
// 先聲明,后賦值(使用前賦值即可)
數據類型 變量名;
變量名 = 初始化值;
double money;
money = 55.5;
System.out.println(money);
```
還可以(擴展)
在同一行定義多個同一種數據類型的變量,中間使用逗號隔開。但不建議使用這種方式,降低程序的可讀性。
```java
int a = 10, b = 20; // 定義int類型的變量a和b,中間使用逗號隔開
System.out.println(a);
System.out.println(b);
int c,d; // 聲明int類型的變量c和d,中間使用逗號隔開
c = 30;
d = 40;
System.out.println(c);
System.out.println(d);
```
#### 3.6.2 變量的修改
```java
int a = 10;
a = 30; //修改變量的值
System.out.println(a);
```
變量前面不加數據類型時,表示修改已存在的變量的值。
### 3.7 變量的注意事項(理解)
1. 在同一對花括號中,變量名不能重復。
2. 變量在使用之前,必須初始化(賦值)。
3. 定義long類型的變量時,需要在整數的后面加L(大小寫均可,建議大寫)。因為整數默認是int類型,整數太大可能超出int范圍。
4. 定義float類型的變量時,需要在小數的后面加F(大小寫均可,建議大寫)。因為浮點數的默認類型是double, double的取值范圍是大于float的,類型不兼容。
### 3.8 鍵盤錄入(理解)
我們可以通過 Scanner 類來獲取用戶的輸入。使用步驟如下:
1、導包。Scanner 類在java.util包下,所以需要將該類導入。導包的語句需要定義在類的上面。
```java
import java.util.Scanner;
```
2、創建Scanner對象。
```java
Scanner sc = new Scanner(System.in);// 創建Scanner對象,sc表示變量名,其他均不可變
```
3、接收數據
```java
int i = sc.nextInt(); // 表示將鍵盤錄入的值作為int數返回。
```
示例:
```java
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) {
//創建對象
Scanner sc = new Scanner(System.in);
//接收數據
int a = sc.nextInt();
//輸出數據
System.out.println(a);
}
}
```
### 3.9 標識符(理解)
標識符是用戶編程時使用的名字,用于給類、方法、變量、常量等命名。
Java中標識符的組成規則:
? 由字母、數字、下劃線“_”、美元符號“$”組成,第一個字符不能是數字。
? 不能使用java中的關鍵字作為標識符。
? 標識符對大小寫敏感(區分大小寫)。
Java中標識符的命名約定:
? 小駝峰式命名:變量名、方法名
? 首字母小寫,從第二個單詞開始每個單詞的首字母大寫。
? 大駝峰式命名:類名
? 每個單詞的首字母都大寫。
? 另外,標識符的命名最好可以做到見名知意
? 例如:username、studentNumber等。