<blockquote><h4>第一次學(xué)習(xí)Java</h4></blockquote>
??????我剛開始Java,是在大二的時候绑谣。我老師問我的第一句話是:“你叫張孝平是吧党窜?”,我說:“對啊借宵,老師幌衣!”。他說:“你認(rèn)識張孝祥嗎壤玫?”豁护,我有點(diǎn)懵,“張孝祥欲间?我不認(rèn)識啊”楚里,我答道。老師說:“你回去可以看看張孝祥的Java視頻”猎贴。我說:“好的班缎,老師!我回去一定看”嘱能。
??????等回到宿舍吝梅,我開始百度張孝祥這號人物,結(jié)果發(fā)現(xiàn)此人來頭挺大惹骂,傳智博客的創(chuàng)始人及教學(xué)總監(jiān)苏携。在我們這行業(yè)(IT)相當(dāng)有名啊对粪!不知是由于什么原因右冻,我開始喜歡上了Java這門編程語言装蓬。
<blockquote><h4>認(rèn)識Java(OOP)編程語言</h4></blockquote>
Java語言的主要特點(diǎn):
??????1. 跨平臺性
??????所謂的跨平臺性,是指軟件可以不受計(jì)算機(jī)硬件和操作系統(tǒng)的約束而在任意計(jì)算機(jī)環(huán)境下正常運(yùn)行纱扭。這是軟件發(fā)展的趨勢和編程人員追求的目標(biāo)牍帚。之所以這樣說,是因?yàn)橛?jì)算機(jī)硬件的種類繁多乳蛾,操作系統(tǒng)也各不相同暗赶,不同的用戶和公司有自己不同的計(jì)算機(jī)環(huán)境偏好,而軟件為了能在這些不同的環(huán)境里正常運(yùn)行肃叶,就需要獨(dú)立于這些平臺蹂随。
??????而在Java語言中, Java自帶的虛擬機(jī)很好地實(shí)現(xiàn)了跨平臺性因惭。 Java源程序代碼經(jīng)過編譯后生成二進(jìn)制的字節(jié)碼是與平臺無關(guān)的岳锁,但是可被Java虛擬機(jī)識別的一種機(jī)器碼指令。 Java虛擬機(jī)提供了一個字節(jié)碼到底層硬件平臺及操作系統(tǒng)的屏障蹦魔,使得Java語言具備跨平臺性激率。
??????2. 面向?qū)ο?br>
??????面向?qū)ο笫侵敢詫ο鬄榛玖6龋湎掳瑢傩院头椒ㄎ鹁觥ο蟮恼f明用屬性表達(dá)乒躺,而通過使用方法來操作這個對象。面向?qū)ο蠹夹g(shù)使得應(yīng)用程序的開發(fā)變得簡單易用剥险,節(jié)省代碼聪蘸。Java是一種面向?qū)ο蟮恼Z言宪肖,也繼承了面向?qū)ο蟮闹T多好處表制,如代碼擴(kuò)展、代碼復(fù)用等控乾。
??????3. 安全性
??????安全性可以分為四個層面么介,即語言級安全性、編譯時安全性蜕衡、運(yùn)行時安全性壤短、可執(zhí)行代碼安全性。語言級安全性指Java的數(shù)據(jù)結(jié)構(gòu)是完整的對象慨仿,這些封裝過的數(shù)據(jù)類型具有安全性久脯。編譯時要進(jìn)行Java語言和語義的檢查,保證每個變量對應(yīng)一個相應(yīng)的值镰吆,編譯后生成Java類帘撰。運(yùn)行時Java類需要類加載器載入,并經(jīng)由字節(jié)碼校驗(yàn)器校驗(yàn)之后才可以運(yùn)行万皿。 Java類在網(wǎng)絡(luò)上使用時摧找,對它的權(quán)限進(jìn)行了設(shè)置核行,保證了被訪問用戶的安全性。
??????4. 多線程
??????多線程在操作系統(tǒng)中已得到了最成功的應(yīng)用蹬耘。多線程是指允許一個應(yīng)用程序同時存在兩個或兩個以上的線程芝雪,用于支持事務(wù)并發(fā)和多任務(wù)處理。 Java除了內(nèi)置的多線程技術(shù)之外综苔,還定義了一些類惩系、方法等來建立和管理用戶定義的多線程。
??????5. 簡單易用
??????Java源代碼的書寫不拘泥于特定的環(huán)境如筛,可以用記事本蛆挫、文本編輯器等編輯軟件來實(shí)現(xiàn),然后將源文件進(jìn)行編譯妙黍,編譯通過后可直接運(yùn)行悴侵,通過調(diào)試則可得到想要的結(jié)果。
Java三大特性:封裝拭嫁、繼承可免、多態(tài)
??????封裝:
??????首先,屬性可用來描述同一類事物的特征做粤,方法可描述一類事物可做的操作浇借。封裝就是把屬于同一類事物的共性(包括屬性與方法)歸到一個類中,以方便使用怕品。
??????1.概念:封裝也稱為信息隱藏妇垢,是指利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,使其構(gòu)成一個不可分割的獨(dú)立實(shí)體肉康,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類型的內(nèi)部闯估,盡可能地隱藏內(nèi)部的細(xì)節(jié),只保留一些對外接口使之與外部發(fā)生聯(lián)系吼和。系統(tǒng)的其他部分只有通過包裹在數(shù)據(jù)外面的被授權(quán)的操作來與這個抽象數(shù)據(jù)類型交流與交互涨薪。也就是說,用戶無需知道對象內(nèi)部方法的實(shí)現(xiàn)細(xì)節(jié)炫乓,但可以根據(jù)對象提供的外部接口(對象名和參數(shù))訪問該對象刚夺。
??????2.好處:(1)實(shí)現(xiàn)了專業(yè)的分工。將能實(shí)現(xiàn)某一特定功能的代碼封裝成一個獨(dú)立的實(shí)體后末捣,各程序員可以在需要的時候調(diào)用侠姑,從而實(shí)現(xiàn)了專業(yè)的分工。(2)隱藏信息箩做,實(shí)現(xiàn)細(xì)節(jié)莽红。通過控制訪問權(quán)限可以將可以將不想讓客戶端程序員看到的信息隱藏起來,如某客戶的銀行的密碼需要保密卒茬,只能對該客戶開發(fā)權(quán)限船老。
??????繼承:
??????就是個性對共性的屬性與方法的接受咖熟,并加入個性特有的屬性與方法
??????1.概念:一個類繼承另一個類,則稱繼承的類為子類柳畔,被繼承的類為父類馍管。
??????2.目的:實(shí)現(xiàn)代碼的復(fù)用。
??????3.理解:子類與父類的關(guān)系并不是日常生活中的父子關(guān)系薪韩,子類與父類而是一種特殊化與一般化的關(guān)系确沸,是is-a的關(guān)系,子類是父類更加詳細(xì)的分類俘陷。如class dog extends animal,就可以理解為dog is a animal.注意設(shè)計(jì)繼承的時候罗捎,若要讓某個類能繼承,父類需適當(dāng)開放訪問權(quán)限拉盾,遵循里氏代換原則桨菜,即向修改關(guān)閉對擴(kuò)展開放,也就是開-閉原則捉偏。
??????4.結(jié)果:繼承后子類自動擁有了父類的屬性和方法倒得,但特別注意的是,父類的私有屬性和構(gòu)造方法并不能被繼承夭禽。
??????另外子類可以寫自己特有的屬性和方法霞掺,目的是實(shí)現(xiàn)功能的擴(kuò)展,子類也可以復(fù)寫父類的方法即方法的重寫讹躯。
??????多態(tài):
??????多態(tài)的概念發(fā)展出來菩彬,是以封裝和繼承為基礎(chǔ)的。
??????多態(tài)就是在抽象的層面上實(shí)施一個統(tǒng)一的行為潮梯,到個體(具體)的層面上時骗灶,這個統(tǒng)一的行為會因?yàn)閭€體(具體)的形態(tài)特征而實(shí)施自己的特征行為叶雹。(針對一個抽象的事,對于內(nèi)部個體又能找到其自身的行為去執(zhí)行迅箩。)
??????1.概念:相同的事物蛉迹,調(diào)用其相同的方法,參數(shù)也相同時胰锌,但表現(xiàn)的行為卻不同。
?????? 2.理解:子類以父類的身份出現(xiàn),但做事情時還是以自己的方法實(shí)現(xiàn)糊肤。子類以父類的身份出現(xiàn)需要向上轉(zhuǎn)型(upcast),其中向上轉(zhuǎn)型是由JVM自動實(shí)現(xiàn)的氓鄙,是安全的馆揉,但向下轉(zhuǎn)型(downcast)是不安全的,需要強(qiáng)制轉(zhuǎn)換抖拦。子類以父類的身份出現(xiàn)時自己特有的屬性和方法將不能使用升酣。
<blockquote><h4>HelloWrold</h4></blockquote>
package com.zxp.example;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}