JavaSE_day01 筆記
一神年、Java 是什么?
Java 是一種面向?qū)ο箢愋偷木幊陶Z言行嗤。
1991 年已日,Oak(橡樹)主要是做消費(fèi)類型的電子嵌入式芯片。
1995 年栅屏,Java(爪哇飘千,咖啡)最終做 Web 應(yīng)用程序堂鲜。
可以參考每月的 TIOBE 編程語言排行榜。
Java 主要是應(yīng)在服務(wù)端開發(fā)中护奈,游戲服務(wù)器缔莲,移動(dòng)端服務(wù)器,商城服務(wù)器霉旗,視頻服務(wù)器痴奏,銀行服務(wù)器。
Java 還會(huì)作為底層封裝的一個(gè)標(biāo)準(zhǔn)厌秒,通過 Java 來調(diào)用一些底層的操作读拆。
二、Java 目前主要有三種版本
J2SE:Java 2 Platform Standard Edition鸵闪,后來叫 JavaSE檐晕。主要是 Java 技術(shù)的核心和基礎(chǔ)部分。
J2EE:Java 2 Platform Enterprise Edition蚌讼,后來叫 JavaEE辟灰。目前 Eclipse 基金組織在 2018-7-31 又定了一個(gè)新的名字,Jakarta EE啦逆。主要代表企業(yè)應(yīng)用開發(fā)中相關(guān)的解決方案伞矩。簡單理解就是,如果我們需要開發(fā)一個(gè)完整的商業(yè)項(xiàng)目夏志,單純靠 Java 是完成不了的乃坤,需要整合其他的技術(shù)一起才行。比如沟蔑,一個(gè)項(xiàng)目會(huì)用到 Spring湿诊、MyBatis、Hibernate瘦材、Struts2厅须、Redis、Lucene食棕、Solr朗和、Elasticsearch、Zookeeper簿晓、Nginx眶拉、Maven、SVN憔儿、Git忆植、Gradle...
J2ME:幾乎已經(jīng)淘汰了。目前主要流行使用 Android 技術(shù)來處理一些小型設(shè)備的應(yīng)用。開發(fā) Android 應(yīng)用可以使用 Java 也可以使用 Kotlin朝刊。
三耀里、Java 的特點(diǎn)
主要有如下幾個(gè)特點(diǎn):簡潔、面向?qū)ο蟮氖懊ァ⒎植际降姆肟妗⒕幾g型的、體系中立的痪枫、可移植的织堂、健壯的
Java 的簡潔是相對(duì) C++ 語言來說的,Java 主要是舍棄了 C++ 中一些比較復(fù)雜的東西奶陈,比如指針、結(jié)構(gòu)附较、單元吃粒、頭文件、運(yùn)算符重載等內(nèi)容拒课。
Java 是所有面向?qū)ο笳Z言中徐勃,面得最“純粹”的面向?qū)ο蟆?/p>
Java 的分布式能力,主要體現(xiàn)在它超強(qiáng)的聯(lián)網(wǎng)能力早像,Java 開發(fā) Socket 通信相關(guān)的程序非常簡單僻肖,訪問遠(yuǎn)程對(duì)象的方式跟本地文件系統(tǒng)那樣輕松。
計(jì)算機(jī)中使用的高級(jí)語言編寫程序的執(zhí)行方式主要有兩種:編譯型和解釋型卢鹦。
編譯型:專門的編譯器臀脏,將我們寫好的源代碼,轉(zhuǎn)成當(dāng)前系統(tǒng)平臺(tái)所在的硬件設(shè)備上能夠讀懂并執(zhí)行的機(jī)器碼冀自。接著就可以讓電腦識(shí)別和運(yùn)行揉稚。常見的編譯型語言:C、C++熬粗、Kotlin搀玖、Objective-C、Swift 等驻呐。
解釋型:專門的解釋器灌诅,將我們寫好的代碼逐行解析執(zhí)行,不會(huì)理你這行數(shù)據(jù)有多長含末,只要是一行即可猜拾。可以即時(shí)解析成對(duì)應(yīng)的機(jī)器碼答渔,立即執(zhí)行关带。常見的解釋型語言:JavaScript、Python、Ruby 等宋雏。
Java 呢芜飘,特殊一點(diǎn)點(diǎn)。它既是編譯型磨总,也是解釋型語言嗦明。Java 需要將源碼(.java)經(jīng)過編譯器進(jìn)行編譯,得到一個(gè)字節(jié)碼文件(.class)蚪燕,它是一種與平臺(tái)無關(guān)的娶牌、不可執(zhí)行的文件。接著馆纳,需要找到解析器解析后诗良,才能夠得到一個(gè)指定系統(tǒng)(比如,當(dāng)前是 win 系統(tǒng))的可執(zhí)行文件鲁驶。
Java 的 JVM 主要是負(fù)責(zé)執(zhí)行生成的字節(jié)碼文件的一個(gè)工具鉴裹。JVM 也就是常說的虛擬機(jī)。以后面試的時(shí)候钥弯,會(huì)常被問到径荔。Java 的跨平臺(tái)特性其實(shí)是依靠了 JVM 的強(qiáng)大功能。JVM 給所有平臺(tái)中安裝的工具都設(shè)計(jì)了一致接口脆霎,只需要編譯器面向接口生成對(duì)應(yīng)的代碼即可讓虛擬機(jī)進(jìn)行解析執(zhí)行总处。JVM 的作用,就是一個(gè)轉(zhuǎn)換器睛蛛。轉(zhuǎn)換后鹦马,主要是一個(gè)字節(jié)碼文件,這種文件帶有一點(diǎn)體系結(jié)構(gòu)中立的特性和可移植性玖院,跟誰(任何平臺(tái))都沒有關(guān)系菠红。
Java 在運(yùn)行前和運(yùn)行時(shí),都會(huì)進(jìn)行一系列的檢查难菌,保證程序的健康可用狀態(tài)试溯。
Java 可以說是目前最安全的一種程序設(shè)計(jì)語言,可以另外學(xué)習(xí)一些web 安全郊酒,Shiro遇绞、Spring Security 安全框架。
Java 還有一個(gè)特別優(yōu)秀的多線程特性燎窘,使得很多應(yīng)用的性能得到極大的改善摹闽。在面試過程中,也是面試官特別喜歡進(jìn)行提問的褐健。面試的點(diǎn)主要在于考察應(yīng)聘者對(duì)程序更抽象的理解能力付鹿。
Java 是一種動(dòng)態(tài)的語言澜汤,可以很方便的查詢運(yùn)行的信息,還能給運(yùn)行中的程序加入新的代碼舵匾。
靜態(tài)編譯:一次編譯俊抵,在編譯的時(shí)候把你所有的模塊都編譯進(jìn)去。
動(dòng)態(tài)編譯:按需編譯坐梯,程序在運(yùn)行的時(shí)候徽诲,用到哪個(gè)模塊就加載哪個(gè)模塊。
四吵血、搭建 Java 的開發(fā)環(huán)境
JDK:Java SE Development kit谎替,Java 的標(biāo)準(zhǔn)開發(fā)包。JDK 主要是包括了編譯和運(yùn)行需要用到的各種工具包蹋辅,比如 Java 編譯器钱贯、Java 運(yùn)行時(shí)環(huán)境,還有一個(gè)常用的類庫晕翠。
上面說到的運(yùn)行時(shí)環(huán)境喷舀,其實(shí)就是 JRE。
1)先雙擊安裝淋肾,指定安裝路徑(非中文路徑,不要在 c 盤)爸邢,取消公共 JRE 選項(xiàng)樊卓。
2)右鍵“我的電腦”→“屬性”→“高級(jí)系統(tǒng)設(shè)置”→“環(huán)境變量”按鈕→添加“JAVA_HOME”→ 編輯 Path 的值,在最前面加上 “%JAVA_HOME%\bin;”杠河。
3)Win + R 快捷鍵碌尔,調(diào)出運(yùn)行窗口,輸入 cmd 打開 DOS 命令行工具券敌。輸入 java -version 進(jìn)行驗(yàn)證是否安裝 JDK 成功唾戚。
JDK 10
bin:主要存放一些執(zhí)行命令,比如將要使用 javac 和 java 命令待诅。
conf:存放相關(guān)的配置文件叹坦。
include:存放平臺(tái)特定的頭文件。
jmods:存放各種模塊卑雁,JDK 9 版本后新增的內(nèi)容募书。
legal:存放模塊的授權(quán)文件。
lib:存放一些補(bǔ)充的 jar 包文件测蹲。
DOS 命令
cls:清屏莹捡。
: 冒號(hào):盤符。
cd:進(jìn)入指定的目錄扣甲。
cd ..:回退上一級(jí)目錄篮赢。
cd \:回到根目錄中。
五、HelloWorld
類:所有的 Java 代碼都需要寫在一個(gè)類文件中启泣,文件的后綴名 xxx.java涣脚。
main 函數(shù):程序的入口。
工具:Eclipse种远、STS涩澡、Netbean、IDEA坠敷。
記事本
javac 的命令格式:javac -d 生成的路徑 源碼文件的路徑
如果路徑是當(dāng)前目錄的話妙同,則可以直接使用實(shí)心點(diǎn)來表示。
javac -d . One.java
java 的命令格式:java 文件名
java One
directory 目錄 f:\abc\bcd\ee\ww
六膝迎、Java 的注釋
注釋的作用粥帚,主要是用說明性的文字,對(duì)當(dāng)前代碼進(jìn)行解釋限次,讓合作降低溝通成功芒涡。
注釋的作用:多寫注釋,以防忘記卖漫。平時(shí)調(diào)錯(cuò)的時(shí)候费尽,也可以用到。
寫好的注釋羊始,系統(tǒng)是不會(huì)執(zhí)行注釋中的內(nèi)容旱幼。
單行注釋://
多行注釋:/* */
文檔注釋:/** */ 通過 javadoc 命令可以生成對(duì)應(yīng)的說明文檔。
七突委、關(guān)鍵字
就是系統(tǒng)已經(jīng)定義好的一些單詞柏卤,有特殊的含義。直接使用可以實(shí)現(xiàn)某些功能匀油,開發(fā)者不能自定義它的功能缘缚。
保留字沒有任何含義,也沒有任何作用敌蚜。Java 有可能在某年某月某日會(huì)給它賦值一些功能桥滨,但到底是什么功能,它還沒確定钝侠,只是當(dāng)前占用不然其他人使用该园。
八、標(biāo)識(shí)符
組成元素:英文 a-Z帅韧、數(shù)字 0-9里初、符號(hào) _ 和 $
書寫規(guī)則:
1)數(shù)字不能開頭
2)不能使用關(guān)鍵字和保留字
3)嚴(yán)格區(qū)分大小寫,不限制長度忽舟,但要求有意義双妨、可讀性強(qiáng)淮阐。
參考“駝峰命名法”,就是每個(gè)單詞的首字母大寫刁品。
九泣特、數(shù)據(jù)
軟件開發(fā)其實(shí)就是跟數(shù)據(jù)打交道。
軟件 = 數(shù)據(jù) + 邏輯挑随。
Java 中提供兩種容器來存放數(shù)據(jù):常量和變量状您。
常量:就是不會(huì)再改變的數(shù)據(jù)。
變量:就是會(huì)發(fā)生改變的數(shù)據(jù)兜挨。
十膏孟、變量
容器,其實(shí)就跟我們喝水的時(shí)候用的杯子一樣拌汇。將我們需要的數(shù)據(jù)(水)裝載容器(杯子)中柒桑。
我們應(yīng)該將對(duì)應(yīng)的數(shù)據(jù)裝載在對(duì)應(yīng)的容器中,不然就會(huì)引發(fā)類型匹配錯(cuò)誤噪舀。好比魁淳,花生油的瓶子不要裝醋,否則會(huì)串味与倡。
12.21 小數(shù):double界逛、float 浮點(diǎn)類型
double 雙精度浮點(diǎn)類型,范圍最大纺座。
float 使用時(shí)仇奶,需要加上一個(gè) f 或者 F 作為后綴。2.54F比驻、2.56f
12 整數(shù):int 整型
十進(jìn)制:日常生活中常見的數(shù)據(jù)類型。10岛抄、12别惦、88、59...
二進(jìn)制:以 0b 或者0B 開頭夫椭。0b1100掸掸、0B0001
十六進(jìn)制:以 0x 或者 0X 開頭。數(shù)字 0-9 和 a-f 組成蹭秋。0xa2
八進(jìn)制:以 0 開頭扰付。0123、0257
true 布爾:boolean 布爾型
true 真
false 假
c 字符:char 字符型
指的是單字符仁讨,’a’羽莺、1、’中’
要特別注意洞豁,a-A 的話盐固,有時(shí)候可以當(dāng)做數(shù)字來用荒给,在ASCII 碼表中,字母有對(duì)應(yīng)的數(shù)值刁卜。比如 a 是 97志电。
變量值可以被訪問,還可以被覆蓋蛔趴,設(shè)置可以被賦 null 值挑辆。
數(shù)據(jù)是如何存儲(chǔ)的?
不論是在內(nèi)存還是硬盤孝情,存儲(chǔ)設(shè)備的最小信息單元叫“位 bit”鱼蝉,比特位,一般使用小寫 b 字母表示咧叭。
計(jì)算機(jī)最小的存儲(chǔ)單元叫“字節(jié) byte”,一般使用大寫 B 字母表示蚀乔。字節(jié)是由連續(xù)的 8 個(gè)位組成的。
1 B = 8 bit
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1 PB = 1024 TB
整型
byte 字節(jié) 1 -128 ~ 127
short 短整型 2 -32768 ~ 32767
int 整型 4 -2147483648 ~ 2147483648
long 長整型 8 -2^63 ~ 2^63-1
浮點(diǎn)型
float 4 - 3.403E38 ~ 3.403E38
double 8 - 1.798E308 ~ 1.798E308
字符型
char 2
布爾型
boolean 1 / 0 1
語法格式:
數(shù)據(jù)類型 變量名 = 數(shù)值;
int i = 12; // 定義變量并且初始化賦值
注意:此處的 = 號(hào)菲茬,叫賦值符吉挣。寫代碼的順序,從右到左婉弹。
因?yàn)槲覀冃枰獙⒂疫叺闹挡腔辏x值給左邊的變量。
在使用變量的時(shí)候镀赌,需要注意以下幾個(gè)問題:
1)定義變量的時(shí)候氯哮,需要注意變量名不能重復(fù)。
2)調(diào)用變量的時(shí)候商佛,需要注意使用范圍喉钢。
十一、數(shù)據(jù)類型的轉(zhuǎn)換
如果是范圍大的往范圍小的方向去轉(zhuǎn)良姆,比如 double → int肠虽,需要強(qiáng)制指定轉(zhuǎn)換的類型。
如果是范圍小的往范圍大的方式去轉(zhuǎn)玛追,比如 int → double税课,數(shù)據(jù)的類型會(huì)自動(dòng)提升。
數(shù)據(jù)類型的大小排列:byte < short < int < long < float < double
十二痊剖、運(yùn)算符
+韩玩、-、*陆馁、/ :加找颓、減、乘氮惯、除叮雳。
- 號(hào)想暗,可以用作加法運(yùn)算,還可以用作“連接符”帘不。
“Hello” + “World” ==> HelloWorld
在使用的時(shí)候说莫,如果連接的對(duì)象一個(gè)是字符串,一個(gè)是數(shù)值類型寞焙,最后得到的結(jié)果還是字符串储狭。”Hello” + 2 = “Hello2”
- 號(hào)捣郊,還可以作為負(fù)號(hào)使用辽狈。
% 取模,簡單理解就是取余數(shù)呛牲。結(jié)果的符號(hào)與被取余數(shù)一致刮萌。
++ 自增:當(dāng)運(yùn)算的時(shí)候,會(huì)先對(duì)自己進(jìn)行 +1 操作娘扩。
-- 自減:當(dāng)運(yùn)算的時(shí)候着茸,會(huì)先對(duì)自己進(jìn)行 -1 操作。
++/-- 后置:先使用變量原有的值進(jìn)行計(jì)算琐旁,計(jì)算完成之后涮阔,才會(huì)執(zhí)行自增/自減。
++/-- 前置:先將自身自增/自減后才進(jìn)行運(yùn)算灰殴,使用變量值是自增/自減后的值敬特。
擴(kuò)展后的賦值符號(hào),= 賦值符號(hào)主要是將右邊的值賦給左邊牺陶。
*= :如果有 a = a * 2; 運(yùn)算伟阔,則可簡寫為:a *= 2;
/= :如果有 a = a / 2; 運(yùn)算,則可簡寫為:a /= 2;
+= :如果有 a = a + 2; 運(yùn)算掰伸,則可簡寫為:a += 2;
-= :如果有 a = a - 2; 運(yùn)算减俏,則可簡寫為:a -= 2;
%= :如果有 a = a % 2; 運(yùn)算,則可簡寫為:a %= 2;
常見的比較運(yùn)算符
<碱工、>、==奏夫、===怕篷、!=、>=酗昼、<=