背景
從事java開發已經三年由余了,最近想好好的總結下java開發。所以打算寫一系列相關文章,能夠系統的涵蓋java后端從入門到高階的開發,所以開始寫java的博客。
這些博客不是簡單的進行流程的介紹,而是我進行實踐和思考的結果,希望對自學的同學能有所幫組。
java語言的概述
1.語言發展概
java語言的發展,經歷了三代的語言,才發展出了純面向對象的java語言。第一代語言是打孔機,純粹的機器語言。第二代語言是匯編語言,第三代語言是高級語言,有面向過程思想的C、Pascal、Fortan等。有面向對象的C++,有跨平臺又面向對象的java等。
95年 sun公司推出JAVA,前身oak
創始人: 詹姆斯 高斯林
3.java語言版本
- 98年 內部版本1.2 java技術平臺命名為:j2se、j2me、j2ee
- 04年 內部版本1.5 外部版本5.0 改動非常大
- 06年 內部版本1.6 重命名java技術平臺,javaSE、javaME、javaEE
- 09年 Oracle收購sun公司
- 11年 內部版本1.7
- 14年 內部版本1.8 改動非常大
- 17年 內部版本1.9 從該版本開始,每6個月版本升級計劃
- 18年3月 內部版本1.10
注意公司中使用的都是LTS版本
2.java技術體系平臺
java se(Java Standard Edition) Java標準版
主要應用于PC上的GUI程序開發。
java ee(Java Enterprise Edition) Java企業級版本
主要用于web應用程序開發,為企業提供一套解決方案。
java me(Java Micro Edition)
主要用于嵌入式平臺的開發。現在幾乎沒用了。
3.java在各個領域中的應用
- 企業級開發
- android應用
- 機器學習領域
java的運行機制和執行過程
兩個機制,一是JVM虛擬機機制,二是GC,垃圾自動回收機制.
java語言環境的搭建
下載安裝JDK
到Oracle官網下載 , 下載對應的版本,我這使用的事JDK8
配置path環境變量
windows下安裝后的JDK會生成兩個目錄,一個jdk,一個jre,因為jdk中帶有jre
什么是環境變量如何實操配置?
環境變量是運行命令的時候, 操作系統會默認去搜索的路徑。
windows下的環境變量配置
到Oracle官網下載對應的JDK版本.
- 添加JAVA_HOME環境變量為JDK安裝的根目錄。
- 將%JAVA_HOME%/bin添加到PATH環境變量下。
Unix下的環境變量配置
mac下安裝JDK很簡單。
方法一: brew cast install java8
即可安裝jdk8
方法二: 到Oracle官網下載對應的JDK版本, 按提示安裝即可
mac下安裝的會自動添加到對應的path環境變量中
JDK、JRE、JVM是什么有什么關系?
JDK(Java Development Kit)指java開發工具包
JRE(Java Runtime Environment)指java運行環境
JVM指Java虛擬機, 其運行于對于操作系統層之上。(具有指令集并使用不同的存儲區域。負責執行指
令,管理數據、內存、寄存器。)
JDK = JRE + 開發工具集合
JRE = JVM + Java SE標準類庫
Java中的注釋
java中的注釋和C、C++都一樣, 有單行和多行注釋。
其中java還有文檔注釋,所謂的文檔注釋就是該注釋可以生成對應的文檔,方便閱讀和維護。
文檔注釋
語法:
/**
* @author: sweetcs
*
*/
文檔注釋對應的生成文檔的命令javadoc,該命令是用來生成java api文檔的命令,而文檔注釋是為了在生成API文檔的時候,能夠生成對應接口的描述。
javadoc -d 文件夾名稱 xxx.java
類的結構
類的簽名,修飾符是可選的
public class XXXX
類體
{
}
方法的簽名:
public int calcHeight(int a, int b)
方法體
{
}
變量
標識符
標識符就是給變量、類、方法取名字就叫做標識符。
java中的標識符必須是字母(以a-z大小),數字、下劃線和$符號組成.
命名標識符需要注意的細節
- 標識符不能以數字開頭取名
- 標識符不能以空白符開頭
- 標識符不能以保留字、關鍵字命名
按數據類型分類
基本數據類型
整型
- byte 一個字節 -128~127
- short 兩個字節 -2^15 ~ 2 ^15 -1
- int 四個字節 -2^31 ~ 2^31 -1
- long 八個字節 -2^63 ~ 2^63 - 1
java的整型常量默認為 int 型,聲明long型常量須后加‘l’或‘L’
浮點型
java中的浮點型有兩種,double和float,必須包含小數點。
- 浮點型常量默認類型是double
- 要創建float類型的浮點類型,需要在小數后加f或者F
- float四字節、double 8字節
- 浮點型常量可以使用d或者D表示,比如9D, 9d
字符類型
字符類型是可以運算, 因為其本質就是數字。java中的字符用Unicode編碼,這些字符包含在ASCII碼范圍內沒有變。
字符常量的三種表示方式
- 使用單引號括起來的單個字符
- 轉移字符
- 使用Unicode值來表示字符型常量
Unicode編碼與UTF-8的關系
- Unicode是一種編碼,它只規定了符號的二進制代碼,沒有規定該二進制代碼如何存儲。
- 無法區別 Unicode 和 ASCII:計算機無法區分三個字節表示一個符號還是分別表示三個符號。另外,我們知道,英文字母只用一個字節表示就夠了,如果unicode統一規定,每個符號用三個或四個字節表示,那么每個英文字母前都必然有二到三個字節是0,這對于存儲空間來說是極大的浪費。
- UTF-8是對Unicode編碼的一種實現方式
- UTF-8是一種變長的編碼方式。它可以使用 1-6 個字節表示一個符號,根據不同的符號而變化字節長度。
UTF-8的編碼規則:
- 對于單字節的UTF-8編碼,該字節的最高位為0,其余7位用來對字符進行編碼(等同于ASCII碼)。
- 對于多字節的UTF-8編碼,如果編碼包含 n 個字節,那么第一個字節的前 n 位為1,第一個字節的第 n+1 位為0,該字節的剩余各位用來對字符進行編碼。在第一個字節之后的所有的字節,都是最高兩位為"10",其余6位用來對字符進行編碼。
Unicode和UTF-8的區別
- Unicode是一種編碼規范, 其每個字符占用2個字節。而UTF-8是這種規范的一種實現, 是一種變長編碼方案, 英文字母還是占用一個字節,但是漢字占用3個字節
布爾類型
- boolean類型數據只允許取值true和false,無null。不可以0或非 0 的整數替代false和true,這點和C語言不同。
- Java虛擬機中沒有任何供boolean值專用的字節碼指令,java語言表達所操作的boolean值,在編譯之后都使用java虛擬機中的int數據類型來代替:true用1表示,false用0表示《java虛擬機規范 8版》
引用數據類型
- class定義的類
- interface定義的接口
- 數組
數據類型轉換
基本數據類型轉換
自動數據類型轉換
基本規則: (小--->大)容量小的類型自動轉換為容量大的數據類型。數據類型按容量大小排序為
- 有多種類型的數據混合運算時,系統首先自動將所有數據轉換成容量最大的那種數據類型,然后再進行計算。 -
- byte,short,char之間不會相互轉換,他們三者在計算時首先轉換為int類型。
- 當把任何基本類型的值和字符串(String)進行連接運算時(+),基本類型的值將自動轉化為字符串類型。
整型常量
所謂的整型常量,是屬于整數,但沒有說明使用什么整數結構來進行存儲(byte\short\int).
所以byte b = 5并不是表示5是整型常量,所以并不是int類型存儲到byte類型,這里需要注意理解。
強制類型轉換
基本規則: 大轉小。大轉小的時候, 編譯器編譯期間默認是會報錯的,比如報類型不兼容等。這個時候就需要使用強制類型轉換。
語法:數據類型 變量名 = (目標數據類型)值;
特點:
①表達式有個自動提升原則。表達式的結果的最終類型為 操作數中的最大類型
②強轉符號只針對于最近的有效
int a = (int)12.5+7.5;
③byte、short的底層存儲實際是以int形式。每次byte、short運算都當做int類型
④char類型只能存儲int的常量值,但不能直接存儲int的變量值
String類型和基本類型之前的轉換
基本類型 轉 String
語法:直接拼接空字符串.
String s = i + ""
String 轉 基本類型
語法:通過調用基本數據類型對應的包裝類里的parseXXX方法。
例如:
String s = "123455.5";
double d= Double.pareseDouble(s);
String轉char
String s = "a";
char c = s.charAt(0);