背景
從事java開發(fā)已經三年由余了崔列,最近想好好的總結下java開發(fā)阴挣。所以打算寫一系列相關文章年栓,能夠系統(tǒng)的涵蓋java后端從入門到高階的開發(fā),所以開始寫java的博客糜烹。
這些博客不是簡單的進行流程的介紹违诗,而是我進行實踐和思考的結果,希望對自學的同學能有所幫組疮蹦。
java語言的概述
1.語言發(fā)展概
java語言的發(fā)展诸迟,經歷了三代的語言,才發(fā)展出了純面向對象的java語言。第一代語言是打孔機,純粹的機器語言阵苇。第二代語言是匯編語言壁公,第三代語言是高級語言,有面向過程思想的C绅项、Pascal紊册、Fortan等。有面向對象的C++快耿,有跨平臺又面向對象的java等囊陡。
95年 sun公司推出JAVA,前身oak
創(chuàng)始人: 詹姆斯 高斯林
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程序開發(fā)渤刃。
java ee(Java Enterprise Edition) Java企業(yè)級版本
主要用于web應用程序開發(fā)泉手,為企業(yè)提供一套解決方案骆姐。
java me(Java Micro Edition)
主要用于嵌入式平臺的開發(fā)。現(xiàn)在幾乎沒用了幢踏。
3.java在各個領域中的應用
- 企業(yè)級開發(fā)
- android應用
- 機器學習領域
java的運行機制和執(zhí)行過程
兩個機制线衫,一是JVM虛擬機機制,二是GC惑折,垃圾自動回收機制.
java語言環(huán)境的搭建
下載安裝JDK
到Oracle官網下載 , 下載對應的版本,我這使用的事JDK8
配置path環(huán)境變量
windows下安裝后的JDK會生成兩個目錄枯跑,一個jdk惨驶,一個jre,因為jdk中帶有jre
什么是環(huán)境變量如何實操配置?
環(huán)境變量是運行命令的時候, 操作系統(tǒng)會默認去搜索的路徑敛助。
windows下的環(huán)境變量配置
到Oracle官網下載對應的JDK版本.
- 添加JAVA_HOME環(huán)境變量為JDK安裝的根目錄粗卜。
- 將%JAVA_HOME%/bin添加到PATH環(huán)境變量下。
Unix下的環(huán)境變量配置
mac下安裝JDK很簡單纳击。
方法一: brew cast install java8
即可安裝jdk8
方法二: 到Oracle官網下載對應的JDK版本, 按提示安裝即可
mac下安裝的會自動添加到對應的path環(huán)境變量中
JDK续扔、JRE、JVM是什么有什么關系?
JDK(Java Development Kit)指java開發(fā)工具包
JRE(Java Runtime Environment)指java運行環(huán)境
JVM指Java虛擬機, 其運行于對于操作系統(tǒng)層之上焕数。(具有指令集并使用不同的存儲區(qū)域纱昧。負責執(zhí)行指
令,管理數(shù)據、內存堡赔、寄存器识脆。)
JDK = JRE + 開發(fā)工具集合
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大小),數(shù)字衰絮、下劃線和$符號組成.
命名標識符需要注意的細節(jié)
- 標識符不能以數(shù)字開頭取名
- 標識符不能以空白符開頭
- 標識符不能以保留字袍冷、關鍵字命名
按數(shù)據類型分類
基本數(shù)據類型
整型
- byte 一個字節(jié) -128~127
- short 兩個字節(jié) -2^15 ~ 2 ^15 -1
- int 四個字節(jié) -2^31 ~ 2^31 -1
- long 八個字節(jié) -2^63 ~ 2^63 - 1
java的整型常量默認為 int 型,聲明long型常量須后加‘l’或‘L’
浮點型
java中的浮點型有兩種猫牡,double和float胡诗,必須包含小數(shù)點。
- 浮點型常量默認類型是double
- 要創(chuàng)建float類型的浮點類型淌友,需要在小數(shù)后加f或者F
- float四字節(jié)煌恢、double 8字節(jié)
- 浮點型常量可以使用d或者D表示,比如9D, 9d
字符類型
字符類型是可以運算, 因為其本質就是數(shù)字震庭。java中的字符用Unicode編碼瑰抵,這些字符包含在ASCII碼范圍內沒有變。
字符常量的三種表示方式
- 使用單引號括起來的單個字符
- 轉移字符
- 使用Unicode值來表示字符型常量
Unicode編碼與UTF-8的關系
- Unicode是一種編碼器联,它只規(guī)定了符號的二進制代碼二汛,沒有規(guī)定該二進制代碼如何存儲。
- 無法區(qū)別 Unicode 和 ASCII:計算機無法區(qū)分三個字節(jié)表示一個符號還是分別表示三個符號拨拓。另外肴颊,我們知道,英文字母只用一個字節(jié)表示就夠了渣磷,如果unicode統(tǒng)一規(guī)定婿着,每個符號用三個或四個字節(jié)表示,那么每個英文字母前都必然有二到三個字節(jié)是0醋界,這對于存儲空間來說是極大的浪費竟宋。
- UTF-8是對Unicode編碼的一種實現(xiàn)方式
- UTF-8是一種變長的編碼方式。它可以使用 1-6 個字節(jié)表示一個符號形纺,根據不同的符號而變化字節(jié)長度丘侠。
UTF-8的編碼規(guī)則:
- 對于單字節(jié)的UTF-8編碼,該字節(jié)的最高位為0挡篓,其余7位用來對字符進行編碼(等同于ASCII碼)婉陷。
- 對于多字節(jié)的UTF-8編碼帚称,如果編碼包含 n 個字節(jié),那么第一個字節(jié)的前 n 位為1秽澳,第一個字節(jié)的第 n+1 位為0闯睹,該字節(jié)的剩余各位用來對字符進行編碼。在第一個字節(jié)之后的所有的字節(jié)担神,都是最高兩位為"10"楼吃,其余6位用來對字符進行編碼。
Unicode和UTF-8的區(qū)別
- Unicode是一種編碼規(guī)范, 其每個字符占用2個字節(jié)妄讯。而UTF-8是這種規(guī)范的一種實現(xiàn), 是一種變長編碼方案, 英文字母還是占用一個字節(jié)孩锡,但是漢字占用3個字節(jié)
布爾類型
- boolean類型數(shù)據只允許取值true和false,無null亥贸。不可以0或非 0 的整數(shù)替代false和true躬窜,這點和C語言不同。
- Java虛擬機中沒有任何供boolean值專用的字節(jié)碼指令炕置,java語言表達所操作的boolean值荣挨,在編譯之后都使用java虛擬機中的int數(shù)據類型來代替:true用1表示,false用0表示《java虛擬機規(guī)范 8版》
引用數(shù)據類型
- class定義的類
- interface定義的接口
- 數(shù)組
數(shù)據類型轉換
基本數(shù)據類型轉換
自動數(shù)據類型轉換
基本規(guī)則: (小--->大)容量小的類型自動轉換為容量大的數(shù)據類型朴摊。數(shù)據類型按容量大小排序為
- 有多種類型的數(shù)據混合運算時默垄,系統(tǒng)首先自動將所有數(shù)據轉換成容量最大的那種數(shù)據類型,然后再進行計算甚纲。 -
- byte,short,char之間不會相互轉換口锭,他們三者在計算時首先轉換為int類型。
- 當把任何基本類型的值和字符串(String)進行連接運算時(+)介杆,基本類型的值將自動轉化為字符串類型鹃操。
整型常量
所謂的整型常量,是屬于整數(shù)春哨,但沒有說明使用什么整數(shù)結構來進行存儲(byte\short\int).
所以byte b = 5并不是表示5是整型常量,所以并不是int類型存儲到byte類型组民,這里需要注意理解。
強制類型轉換
基本規(guī)則: 大轉小悲靴。大轉小的時候, 編譯器編譯期間默認是會報錯的,比如報類型不兼容等。這個時候就需要使用強制類型轉換莫其。
語法:數(shù)據類型 變量名 = (目標數(shù)據類型)值;
特點:
①表達式有個自動提升原則癞尚。表達式的結果的最終類型為 操作數(shù)中的最大類型
②強轉符號只針對于最近的有效
int a = (int)12.5+7.5;
③byte、short的底層存儲實際是以int形式乱陡。每次byte浇揩、short運算都當做int類型
④char類型只能存儲int的常量值,但不能直接存儲int的變量值
String類型和基本類型之前的轉換
基本類型 轉 String
語法:直接拼接空字符串.
String s = i + ""
String 轉 基本類型
語法:通過調用基本數(shù)據類型對應的包裝類里的parseXXX方法憨颠。
例如:
String s = "123455.5";
double d= Double.pareseDouble(s);
String轉char
String s = "a";
char c = s.charAt(0);