day1-Java基礎(chǔ)知識(shí)

JavaSE_day01 筆記

一、Java 是什么?

Java 是一種面向?qū)ο箢愋偷木幊陶Z(yǔ)言。

1991 年,Oak(橡樹(shù))主要是做消費(fèi)類型的電子嵌入式芯片。

1995 年,Java(爪哇,咖啡)最終做 Web 應(yīng)用程序。

可以參考每月的 TIOBE 編程語(yǔ)言排行榜。

Java 主要是應(yīng)在服務(wù)端開(kāi)發(fā)中,游戲服務(wù)器,移動(dòng)端服務(wù)器,商城服務(wù)器,視頻服務(wù)器,銀行服務(wù)器。

Java 還會(huì)作為底層封裝的一個(gè)標(biāo)準(zhǔn),通過(guò) Java 來(lái)調(diào)用一些底層的操作。

二、Java 目前主要有三種版本

J2SE:Java 2 Platform Standard Edition,后來(lái)叫 JavaSE。主要是 Java 技術(shù)的核心和基礎(chǔ)部分。

J2EE:Java 2 Platform Enterprise Edition,后來(lái)叫 JavaEE。目前 Eclipse 基金組織在 2018-7-31 又定了一個(gè)新的名字,Jakarta EE。主要代表企業(yè)應(yīng)用開(kāi)發(fā)中相關(guān)的解決方案。簡(jiǎn)單理解就是,如果我們需要開(kāi)發(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ù)來(lái)處理一些小型設(shè)備的應(yīng)用。開(kāi)發(fā) Android 應(yīng)用可以使用 Java 也可以使用 Kotlin。

三、Java 的特點(diǎn)

主要有如下幾個(gè)特點(diǎn):簡(jiǎn)潔、面向?qū)ο蟮?、分布式的、編譯型的、體系中立的、可移植的、健壯的

Java 的簡(jiǎn)潔是相對(duì) C++ 語(yǔ)言來(lái)說(shuō)的,Java 主要是舍棄了 C++ 中一些比較復(fù)雜的東西,比如指針、結(jié)構(gòu)、單元、頭文件、運(yùn)算符重載等內(nèi)容。

Java 是所有面向?qū)ο笳Z(yǔ)言中,面得最“純粹”的面向?qū)ο蟆?/p>

Java 的分布式能力,主要體現(xiàn)在它超強(qiáng)的聯(lián)網(wǎng)能力,Java 開(kāi)發(fā) Socket 通信相關(guān)的程序非常簡(jiǎn)單,訪問(wèn)遠(yuǎn)程對(duì)象的方式跟本地文件系統(tǒng)那樣輕松。

計(jì)算機(jī)中使用的高級(jí)語(yǔ)言編寫程序的執(zhí)行方式主要有兩種:編譯型和解釋型。

編譯型:專門的編譯器,將我們寫好的源代碼,轉(zhuǎn)成當(dāng)前系統(tǒng)平臺(tái)所在的硬件設(shè)備上能夠讀懂并執(zhí)行的機(jī)器碼。接著就可以讓電腦識(shí)別和運(yùn)行。常見(jiàn)的編譯型語(yǔ)言:C、C++、Kotlin、Objective-C、Swift 等。

解釋型:專門的解釋器,將我們寫好的代碼逐行解析執(zhí)行,不會(huì)理你這行數(shù)據(jù)有多長(zhǎng),只要是一行即可??梢约磿r(shí)解析成對(duì)應(yīng)的機(jī)器碼,立即執(zhí)行。常見(jiàn)的解釋型語(yǔ)言:JavaScript、Python、Ruby 等。

Java 呢,特殊一點(diǎn)點(diǎn)。它既是編譯型,也是解釋型語(yǔ)言。Java 需要將源碼(.java)經(jīng)過(guò)編譯器進(jìn)行編譯,得到一個(gè)字節(jié)碼文件(.class),它是一種與平臺(tái)無(wú)關(guān)的、不可執(zhí)行的文件。接著,需要找到解析器解析后,才能夠得到一個(gè)指定系統(tǒng)(比如,當(dāng)前是 win 系統(tǒng))的可執(zhí)行文件。

Java 的 JVM 主要是負(fù)責(zé)執(zhí)行生成的字節(jié)碼文件的一個(gè)工具。JVM 也就是常說(shuō)的虛擬機(jī)。以后面試的時(shí)候,會(huì)常被問(wèn)到。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)中立的特性和可移植性,跟誰(shuí)(任何平臺(tái))都沒(méi)有關(guān)系。

Java 在運(yùn)行前和運(yùn)行時(shí),都會(huì)進(jìn)行一系列的檢查,保證程序的健康可用狀態(tài)。

Java 可以說(shuō)是目前最安全的一種程序設(shè)計(jì)語(yǔ)言,可以另外學(xué)習(xí)一些web 安全,Shiro、Spring Security 安全框架。

Java 還有一個(gè)特別優(yōu)秀的多線程特性,使得很多應(yīng)用的性能得到極大的改善。在面試過(guò)程中,也是面試官特別喜歡進(jìn)行提問(wèn)的。面試的點(diǎn)主要在于考察應(yīng)聘者對(duì)程序更抽象的理解能力。

Java 是一種動(dòng)態(tài)的語(yǔ)言,可以很方便的查詢運(yùn)行的信息,還能給運(yùn)行中的程序加入新的代碼。

靜態(tài)編譯:一次編譯,在編譯的時(shí)候把你所有的模塊都編譯進(jìn)去。

動(dòng)態(tài)編譯:按需編譯,程序在運(yùn)行的時(shí)候,用到哪個(gè)模塊就加載哪個(gè)模塊。

四、搭建 Java 的開(kāi)發(fā)環(huán)境

JDK:Java SE Development kit,Java 的標(biāo)準(zhǔn)開(kāi)發(fā)包。JDK 主要是包括了編譯和運(yùn)行需要用到的各種工具包,比如 Java 編譯器、Java 運(yùn)行時(shí)環(huán)境,還有一個(gè)常用的類庫(kù)。

上面說(shuō)到的運(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 打開(kāi) 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)來(lái)表示。

javac -d . One.java

java 的命令格式:java 文件名

java One

directory 目錄 f:\abc\bcd\ee\ww

六、Java 的注釋

注釋的作用,主要是用說(shuō)明性的文字,對(duì)當(dāng)前代碼進(jìn)行解釋,讓合作降低溝通成功。

注釋的作用:多寫注釋,以防忘記。平時(shí)調(diào)錯(cuò)的時(shí)候,也可以用到。

寫好的注釋,系統(tǒng)是不會(huì)執(zhí)行注釋中的內(nèi)容。

單行注釋://

多行注釋:/* */

文檔注釋:/** */ 通過(guò) javadoc 命令可以生成對(duì)應(yīng)的說(shuō)明文檔。

七、關(guān)鍵字

就是系統(tǒng)已經(jīng)定義好的一些單詞,有特殊的含義。直接使用可以實(shí)現(xiàn)某些功能,開(kāi)發(fā)者不能自定義它的功能。

保留字沒(méi)有任何含義,也沒(méi)有任何作用。Java 有可能在某年某月某日會(huì)給它賦值一些功能,但到底是什么功能,它還沒(méi)確定,只是當(dāng)前占用不然其他人使用。

八、標(biāo)識(shí)符

組成元素:英文 a-Z、數(shù)字 0-9、符號(hào) _ 和 $

書寫規(guī)則:

1)數(shù)字不能開(kāi)頭

2)不能使用關(guān)鍵字和保留字

3)嚴(yán)格區(qū)分大小寫,不限制長(zhǎng)度,但要求有意義、可讀性強(qiáng)。

參考“駝峰命名法”,就是每個(gè)單詞的首字母大寫。

九、數(shù)據(jù)

軟件開(kāi)發(fā)其實(shí)就是跟數(shù)據(jù)打交道。

軟件 = 數(shù)據(jù) + 邏輯。

12123123123.png

Java 中提供兩種容器來(lái)存放數(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)制:日常生活中常見(jiàn)的數(shù)據(jù)類型。10、12、88、59...

二進(jìn)制:以 0b 或者0B 開(kāi)頭。0b1100、0B0001

十六進(jìn)制:以 0x 或者 0X 開(kāi)頭。數(shù)字 0-9 和 a-f 組成。0xa2

八進(jìn)制:以 0 開(kāi)頭。0123、0257

true 布爾:boolean 布爾型

true 真

false 假

c 字符:char 字符型

指的是單字符,’a’、1、’中’

要特別注意,a-A 的話,有時(shí)候可以當(dāng)做數(shù)字來(lái)用,在ASCII 碼表中,字母有對(duì)應(yīng)的數(shù)值。比如 a 是 97。

變量值可以被訪問(wèn),還可以被覆蓋,設(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 長(zhǎng)整型 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

語(yǔ)法格式:

數(shù)據(jù)類型 變量名 = 數(shù)值;

int i = 12; // 定義變量并且初始化賦值

注意:此處的 = 號(hào),叫賦值符。寫代碼的順序,從右到左。

因?yàn)槲覀冃枰獙⒂疫叺闹担x值給左邊的變量。

在使用變量的時(shí)候,需要注意以下幾個(gè)問(wèn)題:

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é)果還是字符串?!盚ello” + 2 = “Hello2”

  • 號(hào),還可以作為負(fù)號(hào)使用。

% 取模,簡(jiǎn)單理解就是取余數(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)算,則可簡(jiǎn)寫為:a *= 2;

/= :如果有 a = a / 2; 運(yùn)算,則可簡(jiǎn)寫為:a /= 2;

+= :如果有 a = a + 2; 運(yùn)算,則可簡(jiǎn)寫為:a += 2;

-= :如果有 a = a - 2; 運(yùn)算,則可簡(jiǎn)寫為:a -= 2;

%= :如果有 a = a % 2; 運(yùn)算,則可簡(jiǎn)寫為:a %= 2;

常見(jiàn)的比較運(yùn)算符

<、>、==、===、!=、>=、<=

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容