我網(wǎng)站關(guān)鍵詞太多公司做網(wǎng)站推廣
Java的概述以及環(huán)境配置
一、Java 簡(jiǎn)介
什么是Java
Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?#xff0c;允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程 。
二、java的特點(diǎn)(靜態(tài)類型語言)
1.簡(jiǎn)單性
Java看起來設(shè)計(jì)得很像C++,但是為了使語言小和容易熟悉,設(shè)計(jì)者們把C++語言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特征,并且不使用主文件,免去了預(yù)處理程序。因?yàn)镴ava沒有結(jié)構(gòu),數(shù)組和串都是對(duì)象,所以不需要指針。Java能夠自動(dòng)處理對(duì)象的引用和間接引用,實(shí)現(xiàn)自動(dòng)的無用單元收集,使用戶不必為存儲(chǔ)管理問題煩惱,能更多的時(shí)間和精力花在研發(fā)上。
2.面向?qū)ο?/strong>
Java是一個(gè)面向?qū)ο蟮恼Z言。對(duì)程序員來說,這意味著要注意應(yīng)中的數(shù)據(jù)和操縱數(shù)據(jù)的方法(method),而不是嚴(yán)格地用過程來思考。在一個(gè)面向?qū)ο蟮南到y(tǒng)中,類(class)是數(shù)據(jù)和操作數(shù)據(jù)的方法的集合。數(shù)據(jù)和方法一起描述對(duì)象(object)的狀態(tài)和行為。每一對(duì)象是其狀態(tài)和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個(gè)類層次體系中有一個(gè)根類,它是具有一般行為的類。Java程序是用類來組織的。
Java還包括一個(gè)類的擴(kuò)展集合,分別組成各種程序包(Package),用戶可以在自己的程序中使用。例如,Java提供產(chǎn)生圖形用戶接口部件的類(java.awt包),這里awt是抽象窗口工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類(java.io包)和支持網(wǎng)絡(luò)功能的類(java.net包)。
3.分布性
Java設(shè)計(jì)成支持在網(wǎng)絡(luò)上應(yīng)用,它是分布式語言。Java既支持各種層次的網(wǎng)絡(luò)連接,又以Socket類支持可靠的流(stream)網(wǎng)絡(luò)連接,所以用戶可以產(chǎn)生分布式的客戶機(jī)和服務(wù)器。
網(wǎng)絡(luò)變成軟件應(yīng)用的分布運(yùn)載工具。Java程序只要編寫一次,就可到處運(yùn)行。
4.編譯和解釋性
Java編譯程序生成字節(jié)碼(byte-code),而不是通常的機(jī)器碼。Java字節(jié)碼提供對(duì)體系結(jié)構(gòu)中性的目標(biāo)文件格式,代碼設(shè)計(jì)成可有效地傳送程序到多個(gè)平臺(tái)。Java程序可以在任何實(shí)現(xiàn)了Java解釋程序和運(yùn)行系統(tǒng)(run-time system)的系統(tǒng)上運(yùn)行。
在一個(gè)解釋性的環(huán)境中,程序開發(fā)的標(biāo)準(zhǔn)“鏈接”階段大大消失了。如果說Java還有一個(gè)鏈接階段,它只是把新類裝進(jìn)環(huán)境的過程,它是增量式的、輕量級(jí)的過程。因此,Java支持快速原型和容易試驗(yàn),它將導(dǎo)致快速程序開發(fā)。這是一個(gè)與傳統(tǒng)的、耗時(shí)的“編譯、鏈接和測(cè)試”形成鮮明對(duì)比的精巧的開發(fā)過程。
5.穩(wěn)健性
Java原來是用作編寫消費(fèi)類家用電子產(chǎn)品軟件的語言,所以它是被設(shè)計(jì)成寫高可靠和穩(wěn)健軟件的。Java消除了某些編程錯(cuò)誤,使得用它寫可靠軟件相當(dāng)容易。
Java是一個(gè)強(qiáng)類型語言,它允許擴(kuò)展編譯時(shí)檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風(fēng)格的隱式聲明。這些嚴(yán)格的要求保證編譯程序能捕捉調(diào)用錯(cuò)誤,這就導(dǎo)致更可靠的程序。
可靠性方面最重要的增強(qiáng)之一是Java的存儲(chǔ)模型。Java不支持指針,它消除重寫存儲(chǔ)和訛誤數(shù)據(jù)的可能性。類似地,Java自動(dòng)的“無用單元收集”預(yù)防存儲(chǔ)漏泄和其它有關(guān)動(dòng)態(tài)存儲(chǔ)分配和解除分配的有害錯(cuò)誤。Java解釋程序也執(zhí)行許多運(yùn)行時(shí)的檢查,諸如驗(yàn)證所有數(shù)組和串訪問是否在界限之內(nèi)。
異常處理是Java中使得程序更穩(wěn)健的另一個(gè)特征。異常是某種類似于錯(cuò)誤的異常條件出現(xiàn)的信號(hào)。使用try/catch/finally語句,程序員可以找到出錯(cuò)的處理代碼,這就簡(jiǎn)化了出錯(cuò)處理和恢復(fù)的任務(wù)。
6.安全性
Java的存儲(chǔ)分配模型是它防御惡意代碼的主要方法之一。Java沒有指針,所以程序員不能得到隱蔽起來的內(nèi)幕和偽造指針去指向存儲(chǔ)器。更重要的是,Java編譯程序不處理存儲(chǔ)安排決策,所以程序員不能通過查看聲明去猜測(cè)類的實(shí)際存儲(chǔ)安排。編譯的Java代碼中的存儲(chǔ)引用在運(yùn)行時(shí)由Java解釋程序決定實(shí)際存儲(chǔ)地址。
Java運(yùn)行系統(tǒng)使用字節(jié)碼驗(yàn)證過程來保證裝載到網(wǎng)絡(luò)上的代碼不違背任何Java語言限制。這個(gè)安全機(jī)制部分包括類如何從網(wǎng)上裝載。例如,裝載的類是放在分開的名字空間而不是局部類,預(yù)防惡意的小應(yīng)用程序用它自己的版本來代替標(biāo)準(zhǔn)Java類。
7.可移植性
Java使得語言聲明不依賴于實(shí)現(xiàn)的方面。例如,Java顯式說明每個(gè)基本數(shù)據(jù)類型的大小和它的運(yùn)算行為(這些數(shù)據(jù)類型由Java語法描述)。
Java環(huán)境本身對(duì)新的硬件平臺(tái)和操作系統(tǒng)是可移植的。Java編譯程序也用Java編寫,而Java運(yùn)行系統(tǒng)用ANSIC語言編寫。
8.高性能
Java是一種先編譯后解釋的語言,所以它不如全編譯性語言快。但是有些情況下性能是很要緊的,為了支持這些情況,Java設(shè)計(jì)者制作了“及時(shí)”編譯程序,它能在運(yùn)行時(shí)把Java字節(jié)碼翻譯成特定CPU(中央處理器)的機(jī)器代碼,也就是實(shí)現(xiàn)全編譯了。
Java字節(jié)碼格式設(shè)計(jì)時(shí)考慮到這些“及時(shí)”編譯程序的需要,所以生成機(jī)器代碼的過程相當(dāng)簡(jiǎn)單,它能產(chǎn)生相當(dāng)好的代碼。
9.多線索性
Java是多線索語言,它提供支持多線索的執(zhí)行(也稱為輕便過程),能處理不同任務(wù),使具有線索的程序設(shè)計(jì)很容易。Java的lang包提供一個(gè)Thread類,它支持開始線索、運(yùn)行線索、停止線索和檢查線索狀態(tài)的方法。
Java的線索支持也包括一組同步原語。這些原語是基于監(jiān)督程序和條件變量風(fēng)范,由C.A.R.Haore開發(fā)的廣泛使用的同步化方案。用關(guān)鍵詞synchronized,程序員可以說明某些方法在一個(gè)類中不能并發(fā)地運(yùn)行。這些方法在監(jiān)督程序控制之下,確保變量維持在一個(gè)一致的狀態(tài)。
10.動(dòng)態(tài)性
Java語言設(shè)計(jì)成適應(yīng)于變化的環(huán)境,它是一個(gè)動(dòng)態(tài)的語言。例如,Java中的類是根據(jù)需要載入的,甚至有些是通過網(wǎng)絡(luò)獲取的。
11.跨平臺(tái)性
Java跨平臺(tái)原理:
由源文件(.java)—>字節(jié)碼文件(.class)(二進(jìn)制文件)-----> 解釋---->Unix,Win,Linux等機(jī)器。
而這一系列的步驟就是通過JVM (JAVA虛擬機(jī)) 來進(jìn)行實(shí)現(xiàn)的。
由此可知,JAVA的編譯和執(zhí)行與JVM有關(guān),與平臺(tái)無關(guān)。
而JVM分為很多個(gè)系統(tǒng)的版本,如Windows,Linux,macOS等等,都有其對(duì)應(yīng)的JVM。因此,
如果我們想要編譯和執(zhí)行編寫好的Java程序,只需要在不同平臺(tái)上安裝其對(duì)應(yīng)的JVM就行了。
核心概念
JDK,JRE,JVM
-
JDK:英文全稱 Java Development Kit,是Java的開發(fā)工具包 JDK是提供給Java開發(fā)人員使用的,其中包含了
Java的開發(fā)工具
和JRE
。其中的開發(fā)工具包括:編譯工具(javac.exe)打包工具(jar.exe)等。通俗的說就是開發(fā)用的。 -
JRE:英文全稱 Java Runtime Environment,是Java運(yùn)行環(huán)境 JRE包括
Java虛擬機(jī) (JVM Java Virtual Machine)
和Java程序所需的核心類庫(kù)
等,如果想要運(yùn)行一個(gè)開發(fā)好的Java程序,計(jì)算機(jī)中只需要安裝JRE即可。通俗的說就是運(yùn)行用的。 -
JVM:英文全稱 Java Virtual Machine),是java虛擬機(jī)。 它只認(rèn)識(shí)
.class
為后綴的文件,它能將class文件中的字節(jié)碼指令進(jìn)行識(shí)別并調(diào)用操作系統(tǒng)向上的API完成動(dòng)作。JVM是java能夠跨平臺(tái)的核心機(jī)制。通俗的說就是跨平臺(tái)用的,就是把我們寫的代碼,轉(zhuǎn)換成class文件用的。
三、java環(huán)境配置
控制面板→系統(tǒng)→高級(jí)系統(tǒng)設(shè)置→環(huán)境變量
JAVA_HOME變量
新建JAVA_HOME變量點(diǎn)擊瀏覽目錄,找到你剛才安裝時(shí)第一次更改的路徑(未修改的默認(rèn)路徑為 C:\Program Files\Java\jdk1.8.0_181 )
path變量
找到系統(tǒng)變量中的path變量,選中,點(diǎn)擊編輯,然后點(diǎn)擊新建
%JAVA_HOME%\bin
繼續(xù)點(diǎn)擊新建,為了確保jre(運(yùn)行)在你使用javaIDE的時(shí)候不產(chǎn)生問題,再新建一個(gè)變量
%JAVA_HOME%\jre\bin
注意: 添加path變量時(shí)注意將內(nèi)容放置之前含Java之上
ClassPath變量
方法和java-home一樣,在初始界面點(diǎn)擊新建(下方可復(fù)制)
ClassPath
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
java運(yùn)行環(huán)境的驗(yàn)證
敲擊鍵盤的Windows + R 按鍵,打開運(yùn)行提示框,輸入cmd
輸入java,驗(yàn)證java安裝是否成功。
輸入javac,回車
安裝java開發(fā)工具IDEA
IDEA創(chuàng)建java項(xiàng)目教程
文件–>項(xiàng)目結(jié)構(gòu)
模塊–>添加
將src選中點(diǎn)擊源代碼使其有該屬性
對(duì)src新建軟件包
設(shè)置軟件包的格式com.test.java01
.將包名稱分開會(huì)形成級(jí)(自己看文件夾目錄不從idea中看)
新建java類
直接新建