關(guān)于Java的基礎(chǔ)知識

Java的定義

  • Java是一門面向?qū)ο?/a>編程語言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進行復(fù)雜的編程

Java的特點

1.簡單性

Java看起來設(shè)計得很像C++,但是為了使語言小和容易熟悉,設(shè)計者們把C++語言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供breakcontinue語句以及異常處理。Java還剔除了C++的操作符過載overload和多繼承特征,并且不使用主文件,免去了預(yù)處理程序。因為Java沒有結(jié)構(gòu),數(shù)組和串都是對象,所以不需要指針。Java能夠自動處理對象的引用和間接引用,實現(xiàn)自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發(fā)上。

2.面向?qū)ο?/strong>

Java是一個面向?qū)ο蟮恼Z言。對程序員來說,這意味著要注意應(yīng)中的數(shù)據(jù)和操縱數(shù)據(jù)的方法(method),而不是嚴格地用過程來思考。在一個面向?qū)ο蟮南到y(tǒng)中,類class是數(shù)據(jù)和操作數(shù)據(jù)的方法的集合。數(shù)據(jù)和方法一起描述對象(object)的狀態(tài)和行為。每一對象是其狀態(tài)和行為的封裝。類是按一定體系和層次安排的,使得子類可以從超類繼承行為。在這個類層次體系中有一個根類,它是具有一般行為的類。Java程序是用類來組織的。

Java還包括一個類的擴展集合,分別組成各種程序包Package,用戶可以在自己的程序中使用。例如,Java提供產(chǎn)生圖形用戶接口部件的類java.awt包),這里awt是抽象窗口工具集(abstract windowing toolkit)的縮寫,處理輸入輸出的類java.io包)和支持網(wǎng)絡(luò)功能的類java.net包)。

3.分布性

Java設(shè)計成支持在網(wǎng)絡(luò)上應(yīng)用,它是分布式語言。Java既支持各種層次的網(wǎng)絡(luò)連接,又以Socket類支持可靠的流stream網(wǎng)絡(luò)連接,所以用戶可以產(chǎn)生分布式的客戶機和服務(wù)器。

網(wǎng)絡(luò)變成軟件應(yīng)用的分布運載工具。Java程序只要編寫一次,就可到處運行。

4.編譯和解釋性

Java編譯程序生成字節(jié)碼(byte-code),而不是通常的機器碼。Java字節(jié)碼提供對體系結(jié)構(gòu)中性的目標文件格式,代碼設(shè)計成可有效地傳送程序到多個平臺。Java程序可以在任何實現(xiàn)了Java解釋程序和運行系統(tǒng)(run-time system)的系統(tǒng)上運行。

在一個解釋性的環(huán)境中,程序開發(fā)的標準“鏈接”階段大大消失了。如果說Java還有一個鏈接階段,它只是把新類裝進環(huán)境的過程,它是增量式的、輕量級的過程。因此,Java支持快速原型和容易試驗,它將導致快速程序開發(fā)。這是一個與傳統(tǒng)的、耗時的“編譯、鏈接和測試”形成鮮明對比的精巧的開發(fā)過程。

5.穩(wěn)健性

Java原來是用作編寫消費類家用電子產(chǎn)品軟件的語言,所以它是被設(shè)計成寫高可靠和穩(wěn)健軟件的。Java消除了某些編程錯誤,使得用它寫可靠軟件相當容易。

Java是一個強類型語言,它允許擴展編譯時檢查潛在類型不匹配問題的功能。Java要求顯式的方法聲明,它不支持C風格的隱式聲明。這些嚴格的要求保證編譯程序能捕捉調(diào)用錯誤,這就導致更可靠的程序。

可靠性方面最重要的增強之一是Java的存儲模型。Java不支持指針,它消除重寫存儲和訛誤數(shù)據(jù)的可能性。類似地,Java自動的“無用單元收集”預(yù)防存儲漏泄和其它有關(guān)動態(tài)存儲分配和解除分配的有害錯誤。Java解釋程序也執(zhí)行許多運行時的檢查,諸如驗證所有數(shù)組和串訪問是否在界限之內(nèi)。

異常處理是Java中使得程序更穩(wěn)健的另一個特征。異常是某種類似于錯誤的異常條件出現(xiàn)的信號。使用try/catch/finally語句,程序員可以找到出錯的處理代碼,這就簡化了出錯處理和恢復(fù)的任務(wù)。

6.安全性

Java的存儲分配模型是它防御惡意代碼的主要方法之一。Java沒有指針,所以程序員不能得到隱蔽起來的內(nèi)幕和偽造指針去指向存儲器。更重要的是,Java編譯程序不處理存儲安排決策,所以程序員不能通過查看聲明去猜測類的實際存儲安排。編譯的Java代碼中的存儲引用在運行時由Java解釋程序決定實際存儲地址。

Java運行系統(tǒng)使用字節(jié)碼驗證過程來保證裝載到網(wǎng)絡(luò)上的代碼不違背任何Java語言限制。這個安全機制部分包括類如何從網(wǎng)上裝載。例如,裝載的類是放在分開的名字空間而不是局部類,預(yù)防惡意的小應(yīng)用程序用它自己的版本來代替標準Java類。

7.可移植性

Java使得語言聲明不依賴于實現(xiàn)的方面。例如,Java顯式說明每個基本數(shù)據(jù)類型的大小和它的運算行為(這些數(shù)據(jù)類型由Java語法描述)。

Java環(huán)境本身對新的硬件平臺和操作系統(tǒng)是可移植的。Java編譯程序也用Java編寫,而Java運行系統(tǒng)用ANSIC語言編寫。

8.高性能

Java是一種先編譯后解釋的語言,所以它不如全編譯性語言快。但是有些情況下性能是很要緊的,為了支持這些情況,Java設(shè)計者制作了“及時”編譯程序,它能在運行時把Java字節(jié)碼翻譯成特定CPU(中央處理器)的機器代碼,也就是實現(xiàn)全編譯了。

Java字節(jié)碼格式設(shè)計時考慮到這些“及時”編譯程序的需要,所以生成機器代碼的過程相當簡單,它能產(chǎn)生相當好的代碼。

9.多線索性

Java是多線索語言,它提供支持多線索的執(zhí)行(也稱為輕便過程),能處理不同任務(wù),使具有線索的程序設(shè)計很容易。Java的lang包提供一個Thread類,它支持開始線索、運行線索、停止線索和檢查線索狀態(tài)的方法。

Java的線索支持也包括一組同步原語。這些原語是基于監(jiān)督程序和條件變量風范,由C.A.R.Haore開發(fā)的廣泛使用的同步化方案。用關(guān)鍵詞synchronized,程序員可以說明某些方法在一個類中不能并發(fā)地運行。這些方法在監(jiān)督程序控制之下,確保變量維持在一個一致的狀態(tài)。

10.動態(tài)性

Java語言設(shè)計成適應(yīng)于變化的環(huán)境,它是一個動態(tài)的語言。例如,Java中的類是根據(jù)需要載入的,甚至有些是通過網(wǎng)絡(luò)獲取的。

Java的關(guān)鍵字及其含義

abstract : 表明類或者成員方法具有抽象屬性
assert :斷言,用來進行程序調(diào)試
boolean : 基本數(shù)據(jù)類型之一,布爾類型,只有true(真)和false(假)兩個值
break :提前跳出一個塊
byte : 基本數(shù)據(jù)類型之一,字節(jié)類型
case : 用在switch語句之中,表示其中的一個分支
catch :用在異常處理中,用來捕捉異常
char :基本數(shù)據(jù)類型之一,字符類型
class :聲明一個類
const : 保留關(guān)鍵字,沒有具體含義
continue : 回到一個塊的開始處
default : 默認,例如,用在switch語句中,表明一個默認的分支
do : 用在do-while循環(huán)結(jié)構(gòu)中
double : 基本數(shù)據(jù)類型之一,雙精度浮點數(shù)類型
else : 用在條件語句中,表明當條件不成立時的分支
enum : 枚舉
extends : 表明一個類型是另一個類型的子類型,這里常見的類型有類和接口
final : 用來說明最終屬性,表明一個類不能派生出子類,或者成員方法不能被覆蓋,或者成員域的值不能被改變,用來定義常量
finally : 用于處理異常情況,用來聲明一個基本肯定會被執(zhí)行到的語句塊
float : 基本數(shù)據(jù)類型之一,單精度浮點數(shù)類型
for : 一種循環(huán)結(jié)構(gòu)的引導詞
goto : 保留關(guān)鍵字,沒有具體含義
if : 條件語句的引導詞
implements : 表明一個類實現(xiàn)了給定的接口
import : 表明要訪問指定的類或包
instanceof : 用來測試一個對象是否是指定類型的實例對象
int : 基本數(shù)據(jù)類型之一,整數(shù)類型
interface : 接口
long : 基本數(shù)據(jù)類型之一,長整數(shù)類型
native : 用來聲明一個方法是由與計算機相關(guān)的語言(如C/C++/FORTRAN語言)實現(xiàn)的
new : 用來創(chuàng)建新實例對象
package : 包
private : 一種訪問控制方式:私用模式
protected : 一種訪問控制方式:保護模式
public : 一種訪問控制方式:共用模式
return : 從成員方法中返回數(shù)據(jù)
short : 基本數(shù)據(jù)類型之一,短整數(shù)類型
static : 表明具有靜態(tài)屬性
strictfp : 用來聲明FP_strict(單精度或雙精度浮點數(shù))表達式遵循IEEE 754算術(shù)規(guī)范 [1]
super : 表明當前對象的父類型的引用或者父類型的構(gòu)造方法
switch : 分支語句結(jié)構(gòu)的引導詞
synchronized : 表明一段代碼需要同步執(zhí)行
this : 指向當前實例對象的引用
throw : 拋出一個異常
throws : 聲明在當前定義的成員方法中所有需要拋出的異常
transient : 聲明不用序列化的成員域
try : 嘗試一個可能拋出異常的程序塊
void : 聲明當前成員方法沒有返回值
volatile : 表明兩個或者多個變量必須同步地發(fā)生變化
while : 用在循環(huán)結(jié)構(gòu)中

Java 運算符

計算機的最基本用途之一就是執(zhí)行數(shù)學運算,作為一門計算機語言,Java也提供了一套豐富的運算符來操縱變量。我們可以把運算符分成以下幾組:

  • 算術(shù)運算符
  • 關(guān)系運算符
  • 位運算符
  • 邏輯運算符
  • 賦值運算符
  • 其他運算符

算術(shù)運算符

算術(shù)運算符用在數(shù)學表達式中,它們的作用和在數(shù)學中的作用一樣。下表列出了所有的算術(shù)運算符。

表格中的實例假設(shè)整數(shù)變量A的值為10,變量B的值為20:

  • : 加法 - 相加運算符兩側(cè)的值(A + B 等于 30)
  • : 減法 - 左操作數(shù)減去右操作數(shù) (A – B 等于 -10)
  • : 乘法 - 相乘操作符兩側(cè)的值 ( A * B等于200)
    / : 除法 - 左操作數(shù)除以右操作數(shù) (B / A等于2 )
    % : 取余 - 左操作數(shù)除以右操作數(shù)的余數(shù) (B%A等于0)
    ++ :自增: 操作數(shù)的值增加1(B++ 或 ++B 等于 21)
    -- : 自減: 操作數(shù)的值減少1(B-- 或 --B 等于 19)

自增自減運算符

1、自增(++)自減(--)運算符是一種特殊的算術(shù)運算符,在算術(shù)運算符中需要兩個操作數(shù)來進行運算,而自增自減運算符是一個操作數(shù)。

解析:

  • int b = ++a; 拆分運算過程為: a=a+1=4; b=a=4, 最后結(jié)果為b=4,a=4

  • int d = --c; 拆分運算過程為: c=c-1=2; d=c=2, 最后結(jié)果為d=2,c=2

**2、前綴自增自減法(++a,--a): **先進行自增或者自減運算,再進行表達式運算。

**3、后綴自增自減法(a++,a--): **先進行表達式運算,再進行自增或者自減運算 實例:


關(guān)系運算符

image.png

位運算符

Java定義了位運算符,應(yīng)用于整數(shù)類型(int),長整型(long),短整型(short),字符型(char),和字節(jié)型(byte)等類型。

位運算符作用在所有的位上,并且按位運算。假設(shè)a = 60,b = 13;它們的二進制格式表示將如下:

image.png

下表列出了位運算符的基本運算,假設(shè)整數(shù)變量A的值為60和變量B的值為13:

image.png

邏輯運算符

下表列出了邏輯運算符的基本運算,假設(shè)布爾變量A為真,變量B為假

image.png

賦值運算符

下面是Java語言支持的賦值運算符:

image.png

條件運算符

條件運算符也被稱為三元運算符。該運算符有3個操作數(shù),并且需要判斷布爾表達式的值。該運算符的主要是決定哪個值應(yīng)該賦值給變量。

image.png

instanceof 運算符

該運算符用于操作對象實例,檢查該對象是否是一個特定類型(類類型或接口類型)。

instanceof運算符使用格式如下:

image.png

如果運算符左側(cè)變量所指的對象,是操作符右側(cè)類或接口(class/interface)的一個對象,那么結(jié)果為真。

下面是一個例子:

image.png

如果被比較的對象兼容于右側(cè)類型,該運算符仍然返回true。

看下面的例子:

image.png

以上實例編譯運行結(jié)果如下:

image.png

Java運算符優(yōu)先級

當多個運算符出現(xiàn)在一個表達式中,誰先誰后呢?這就涉及到運算符的優(yōu)先級別的問題。在一個多運算符的表達式中,運算符優(yōu)先級不同會導致最后得出的結(jié)果差別甚大。

例如,(1+3)+(3+2)*2,這個表達式如果按加號最優(yōu)先計算,答案就是 18,如果按照乘號最優(yōu)先,答案則是 14。

再如,x = 7 + 3 * 2;這里x得到13,而不是20,因為乘法運算符比加法運算符有較高的優(yōu)先級,所以先計算3 * 2得到6,然后再加7。

下表中具有最高優(yōu)先級的運算符在的表的最上面,最低優(yōu)先級的在表的底部。

image.png

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

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

  • 一、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計...
    子非魚_t_閱讀 4,550評論 1 44
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,650評論 18 399
  • 清楚的記著,讀初中時,有一段時間語文老師生病了,不能上課。為了不荒廢學業(yè),班主任請了位本校高中部的語文老師教我們。...
    終南山故事閱讀 341評論 0 2
  • 在我們的觀念中,“讀書人”始終是高于“體育人”的,所以,一提到“體育人”,我們多是跟“頭腦簡單”“四肢發(fā)達”聯(lián)想起...
    淡寫阿瑞閱讀 912評論 0 1
  • 今晚和班里一個孩子媽聊天,引發(fā)我又一輪思考。前情摘要:這個娃從進預(yù)備但到現(xiàn)在,三年了,基本沒怎么哭過,大男孩,很機...
    Jasm1neeee_閱讀 1,523評論 3 5

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