java編程基礎(chǔ)知識學(xué)習(xí)

Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言偎谁。Java 技術(shù)具有卓越的通用性、高效性纲堵、平臺移植性和安全性巡雨,廣泛應(yīng)用于PC、數(shù)據(jù)中心席函、游戲控制臺铐望、科學(xué)超級計算機、移動電話和互聯(lián)網(wǎng)茂附,同時擁有全球最大的開發(fā)者專業(yè)社群正蛙。

給你學(xué)習(xí)路線:html-css-js-jq-javase-數(shù)據(jù)庫-jsp-servlet-Struts2-hibernate-mybatis-spring4-springmvc-ssh-ssm

每天更新學(xué)習(xí)筆記,大家一起學(xué)習(xí)营曼!

不喜勿噴乒验,謝謝!

面向?qū)ο笏枷敫攀?/b>

面向?qū)ο笫腔诿嫦蜻^程的編程思想

面向?qū)ο笏枷胩攸c

是一種更符合我們思想習(xí)慣的思想

可以將復(fù)雜的事情簡單化

將我們從執(zhí)行者變成了指揮者

角色發(fā)生了轉(zhuǎn)換

面向?qū)ο笫鞘裁匆馑寄兀?/p>

面向?qū)ο蟪绦蛟O(shè)計是將人們認(rèn)識世界過程中普遍采用的思維方法應(yīng)用到程序設(shè)計中蒂阱。對象是現(xiàn)實世界中存在的事物锻全,它們是有形的,如某個人蒜危、某種物品虱痕;也可以是無形的,如某項計劃辐赞、某次商業(yè)交易部翘。對象是構(gòu)成現(xiàn)實世界的一個獨立單位,人們對世界的認(rèn)識响委,是從分析對象的特征入手的新思。

對象的特征分為靜態(tài)特征動態(tài)特征兩種。靜態(tài)的特征指對象的外觀赘风、性質(zhì)夹囚、屬性(如某個人具有名字、身高邀窃、體重等)荸哟;動態(tài)的特征指對象具有的功能假哎、行為(如人具有吃飯、睡覺鞍历、打人舵抹、偷稅、漏稅)等劣砍【逵迹客觀事物是錯綜復(fù)雜的,但人們總是從某一目的出發(fā)刑枝,運用抽象分析的能力香嗓,從眾多的特征中抽取最具代表性、最能反映對象本質(zhì)的若干特征加以詳細(xì)研究装畅。

人們將對象的靜態(tài)特征抽象為屬性靠娱,用數(shù)據(jù)來描述,在Java語言中稱之為變量洁灵;人們將對象的動態(tài)特征抽象為行為饱岸,用一組代碼來表示,完成對數(shù)據(jù)的操作徽千,在Java語言中稱之為方法苫费,。一個對象由一組屬性和一組對屬性進行操作的方法構(gòu)成双抽。

將具有相同屬性及相同行為的一組對象稱為類百框。廣義地講,具有共同性質(zhì)的事物的集合就稱為類牍汹。如:博拉圖對人作如下定義:人是沒有毛能直立行走的動物铐维。在博拉圖的定義中“人”是一個類,具有"沒有毛慎菲、直立行走"等一些區(qū)別于其它事物的共同特征嫁蛇;而張三、李四露该、王五等一個個具體的人睬棚,是"人"這個類的一個個"對象"。如下圖:

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零解幼,五五四抑党,六零七 】,無論你是大牛還是小白撵摆,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)底靠!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享特铝!

類:class

類與對象的關(guān)系

在面向?qū)ο蟪绦蛟O(shè)計中暑中,類是一個獨立的單位壹瘟,它有一個類名,其內(nèi)部包括成員變量鳄逾,用于描述對象的屬性俐筋;還包括類的成員方法,用于描述對象的行為严衬。在Java程序設(shè)計中,類被認(rèn)為是一種抽象數(shù)據(jù)類型笆呆,這種數(shù)據(jù)類型请琳,不但包括數(shù)據(jù),還包括方法赠幕。這大大地擴充了數(shù)據(jù)類型的概念俄精。

類是一個抽象的概念,要利用類的方式來解決問題榕堰,必須用類創(chuàng)建一個實例化的類對象竖慧,然后通過類對象去訪問類的成員變量,去調(diào)用類的成員方法來實現(xiàn)程序的功能逆屡。這如同“汽車”本身是一個抽象的概念圾旨,只有使用了一輛具體的汽車,才能感受到汽車的功能魏蔗。

一個類可創(chuàng)建多個類對象砍的,它們具有相同的屬性模式,但可以具有不同的屬性值莺治。Java程序為每一個類對象都開辟了內(nèi)存空間廓鞠,以便保存各自的屬性值。對象與對象之間也可以相互聯(lián)系和相互作用谣旁,我們把這種方式稱為“消息”床佳。 一個消息主要由5部分組成:發(fā)送消息的對象、接收消息的對象榄审、消息傳遞辦法砌们、消息內(nèi)容(參數(shù))、反饋瘟判。

面向?qū)ο蟮某绦蛟O(shè)計有四個主要特征:抽象怨绣、封裝、繼承拷获、多態(tài)篮撑。

抽象

類的定義中明確指出類是一組具有內(nèi)部狀態(tài)和運動規(guī)律對象的抽象,抽象是一種從一般的觀點看待事物的方法匆瓜,它要求我們集中于事物的本質(zhì)特征(內(nèi)部狀態(tài)和運動規(guī)律)赢笨,而非具體細(xì)節(jié)或具體實現(xiàn)未蝌。面向?qū)ο蠊膭钗覀冇贸橄蟮挠^點來看待現(xiàn)實世界,也就是說茧妒,現(xiàn)實世界是一組抽象的對象——類組成的萧吠。

封裝

封裝是面向?qū)ο蟮姆椒ㄋ鶓?yīng)遵循的一個重要原則。它有兩個含義:一是指把對象的屬性和行為看成一個密不可分的整體桐筏,將這兩者“封裝”在一個不可分割的獨立單位(即對象)中纸型。另一層含義指“信息隱蔽”,把不需要讓外界知道的信息隱藏起來梅忌,有些對象的屬性及行為允許外界用戶知道或使用狰腌,但不允許更改,而另一些屬性或行為牧氮,則不允許外界知曉琼腔;或只允許使用對象的功能,而盡可能隱蔽對象的功能實現(xiàn)細(xì)節(jié)踱葛。

封裝機制在程序設(shè)計中表現(xiàn)為丹莲,把描述對象屬性的變量及實現(xiàn)對象功能的方法合在一起,定義為一個程序單位尸诽,并保證外界不能任意更改其內(nèi)部的屬性值甥材,也不能任意調(diào)動其內(nèi)部的功能方法。

封裝機制的另一個特點是性含,為封裝在一個整體內(nèi)的變量及方法規(guī)定了不同級別的“可見性”或訪問權(quán)限擂达。

繼承

繼承是面向?qū)ο蠓椒ㄖ械闹匾拍睿⑶沂翘岣哕浖_發(fā)效率的重要手段胶滋。首先擁有反映事物一般特性的類板鬓,然后在其基礎(chǔ)上派生出反映特殊事物的類。如已有的汽車的類究恤,該類中描述了汽車的普遍屬性和行為俭令,進一步再產(chǎn)生轎車的類,轎車的類是繼承于汽車類部宿,轎車類不但擁有汽車類的全部屬性和行為抄腔,還增加轎車特有的屬性和行為。

在Java程序設(shè)計中理张,已有的類可以是Java開發(fā)環(huán)境所提供的一批最基本的程序——類庫赫蛇。用戶開發(fā)的程序類是繼承這些已有的類。這樣雾叭,現(xiàn)在類所描述過的屬性及行為悟耘,即已定義的變量和方法,在繼承產(chǎn)生的類中完全可以使用织狐。被繼承的類稱為父類或超類暂幼,而經(jīng)繼承產(chǎn)生的類稱為子類或派生類筏勒。根據(jù)繼承機制,派生類繼承了超類的所有成員旺嬉,并相應(yīng)地增加了自己的一些新的成員管行。

面向?qū)ο蟪绦蛟O(shè)計中的繼承機制,大大增強了程序代碼的可復(fù)用性邪媳,提高了軟件的開發(fā)效率捐顷,降低了程序產(chǎn)生錯誤的可能性,也為程序的修改擴充提供了便利。

若一個子類只允許繼承一個父類懂扼,稱為單繼承;若允許繼承多個父類,稱為多繼承技扼。目前許多面向?qū)ο蟪绦蛟O(shè)計語言不支持多繼承。而Java語言通過接口(interface)的方式來彌補由于Java不支持多繼承而帶來的子類不能享用多個父類的成員的缺憾专甩。

繼承

多態(tài)

多態(tài)是面向?qū)ο笤O(shè)計語言的基本特征遮晚。僅僅是將數(shù)據(jù)和方法捆綁在一起,進行類的封裝渣蜗,使用一些簡單的繼承屠尊,還不能算是真正應(yīng)用了面向?qū)ο蟮脑O(shè)計思想。多態(tài)性是面向?qū)ο蟮木韪健6鄳B(tài)性可以簡單地概括為“一個接口讼昆,多種方法”。

多態(tài)性是指同名的方法可在不同的類中具有不同的運動規(guī)律骚烧。在父類演繹為子類時浸赫,類的運動規(guī)律也同樣可以演繹,演繹使子類的同名運動規(guī)律或運動形式更具體赃绊,甚至子類可以有不同于父類的運動規(guī)律或運動形式既峡。不同的子類可以演繹出不同的運動規(guī)律。如動物都會吃碧查,而羊和狼吃的方式和內(nèi)容都不一樣运敢。如:警車鳴笛,普通人反應(yīng)一般忠售,逃犯聽見會大驚失色传惠。警車鳴笛(同一種行為),導(dǎo)致普通人和逃犯不同反應(yīng)(多種形態(tài))稻扬。再如卦方,畫出昆蟲的圖片,對螞蟻和對蜘蛛這2種昆蟲畫出的是不同的圖片泰佳。通常是指對于同一個消息愿汰、同一種調(diào)用困后,在不同的場合,不同的情況下衬廷,執(zhí)行不同的行為摇予。

Java語言中含有方法重載與成員覆蓋兩種形式的多態(tài)。

方法重載:也叫靜態(tài)多態(tài)吗跋。在一個類中侧戴,允許多個方法使用同一個名字,但方法的參數(shù)不同跌宛,完成的功能也不同酗宋。

成員覆蓋:也叫動態(tài)多態(tài)。子類與父類允許具有相同的變量名稱疆拘,但數(shù)據(jù)類型不同蜕猫,允許具有相同的方法名稱,但完成的功能不同哎迄。

多態(tài)的好處:

A:提高了代碼的維護性(繼承保證)

B:提高了代碼的擴展性(由多態(tài)保證)

多態(tài)的弊端:

不能使用子類的特有功能回右。

類與對象

面向?qū)ο蟮木幊趟枷肓D使在計算機語言中對事物的描述與現(xiàn)實世界中該事物的本來面目盡可能地一致,類(class)對象(object)就是面向?qū)ο蠓椒ǖ暮诵母拍钍俊n愂菍δ骋活愂挛锏拿枋鱿杷福浅橄蟮摹⒏拍钌系亩x旨涝;對象是實際存在的該類事物的個體蹬屹,因而也稱實例(Instance)“谆可以這么說:類是對象的抽象慨默;對象是類的實例。如圖5-3就是一個說明類與對象的典型范例:

類與對象的實例化說明

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零弧腥,五五四业筏,六零七 】,無論你是大牛還是小白鸟赫,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)蒜胖!裙內(nèi)有開發(fā)工具,很多干貨和技術(shù)資料分享抛蚤!

上圖中台谢,汽車設(shè)計圖就是“類”,由這個圖紙設(shè)計出來的若干的汽車就是按照該類產(chǎn)生的“對象”岁经∨缶冢可見,類描述了對象的屬性和對象的行為,類是對象的模板樊拓。對象是類的實例纠亚,是一個實實在在的個體,一個類可以對應(yīng)多個對象筋夏。可見蒂胞,如果將對象比作汽車,那么類就是汽車的設(shè)計圖紙条篷,所以面向?qū)ο蟪绦蛟O(shè)計的重點是類的設(shè)計骗随,而不是對象的設(shè)計。

同一個類按同種方法產(chǎn)生出來的多個對象赴叹,其開始的狀態(tài)都是一樣的鸿染,但是修改其中一個對象的時候,其他的對象是不會受到影響的乞巧,比如改裝第一輛汽車的時候涨椒,其他的汽車是不會受到影響的。

內(nèi)部類和匿名類

1:形式參數(shù)和返回值的問題

(1)形式參數(shù):

類名:需要該類的對象

抽象類名:需要該類的子類對象

接口名:需要該接口的實現(xiàn)類對象

(2)返回值類型:

類名:返回的是該類的對象

抽象類名:返回的是該類的子類對象

接口名:返回的是該接口的實現(xiàn)類的對象

(3)鏈?zhǔn)骄幊?/p>

對象.方法1().方法2().......方法n();

這種用法:其實在方法1()調(diào)用完畢后绽媒,應(yīng)該一個對象蚕冬;

方法2()調(diào)用完畢后,應(yīng)該返回一個對象些椒。

方法n()調(diào)用完畢后,可能是對象掸刊,也可以不是對象免糕。

2:包

(1)其實就是文件夾

(2)作用:

A:區(qū)分同名的類

B:對類進行分類管理

a:按照功能分

b:按照模塊分

(3)包的定義

package 包名;

多級包用.分開。

(4)注意事項:

A:package語句必須在文件中的第一條有效語句

B:在一個java文件中忧侧,只能有一個package

C:如果沒有package石窑,默認(rèn)就是無包名

(5)帶包的編譯和運行

A:手動式

B:自動式(掌握)

javac -d . HelloWorld.java

3:導(dǎo)包

(1)我們多次使用一個帶包的類,非常的麻煩蚓炬,這個時候松逊,Java就提供了一個關(guān)鍵字import。

(2)格式:

import 包名...類名;

另一種:

import 包名...*;(不建議)

(3)package,import,class的順序

package > import > class

4:權(quán)限修飾符

(1)權(quán)限修飾符

本類同一個包下不同包下的子類不同包下的無關(guān)類

privateY

默認(rèn)YY

protectedYYY

publicYYYY

(2)這四種權(quán)限修飾符在任意時刻只能出現(xiàn)一種肯夏。

public class Demo {}

5:常見的修飾符

(1)分類:

權(quán)限修飾符:private,默認(rèn),protected,public

狀態(tài)修飾符:static,final

抽象修飾符:abstract

(2)常見的類及其組成的修飾

類:

默認(rèn),public,final,abstract

常用的:public

成員變量:

private,默認(rèn),protected,public,static,final

常用的:private

構(gòu)造方法:

private,默認(rèn),protected,public

常用的:public

成員方法:

private,默認(rèn),protected,public,static,final,abstract

常用的:public

(3)另外比較常見的:

public static final int X = 10;

public static void show() {}

public final void show() {}

public abstract void show();

6:內(nèi)部類

(1)把類定義在另一個類的內(nèi)部经宏,該類就被稱為內(nèi)部類。

舉例:把類B定義在類A中驯击,類B就被稱為內(nèi)部類烁兰。

(2)內(nèi)部類的訪問規(guī)則

A:可以直接訪問外部類的成員,包括私有

B:外部類要想訪問內(nèi)部類成員徊都,必須創(chuàng)建對象

(3)內(nèi)部類的分類

A:成員內(nèi)部類

B:局部內(nèi)部類

(4)成員內(nèi)部類

A:private 為了數(shù)據(jù)的安全性

B:static 為了訪問的方便性

成員內(nèi)部類不是靜態(tài)的:

外部類名.內(nèi)部類名 對象名 = new 外部類名.new 內(nèi)部類名();

成員內(nèi)部類是靜態(tài)的:

外部類名.內(nèi)部類名 對象名 = new 外部類名.內(nèi)部類名();

(5)局部內(nèi)部類

A:局部內(nèi)部類訪問局部變量必須加final修飾沪斟。

B:為什么呢?

因為局部變量使用完畢就消失,而堆內(nèi)存的數(shù)據(jù)并不會立即消失暇矫。

所以主之,堆內(nèi)存還是用該變量择吊,而改變量已經(jīng)沒有了。

為了讓該值還存在槽奕,就加final修飾几睛。

通過反編譯工具我們看到了,加入final后史翘,堆內(nèi)存直接存儲的是值枉长,而不是變量名。

(7)匿名內(nèi)部類

A:是局部內(nèi)部類的簡化形式

B:前提

存在一個類或者接口

C:格式:

new 類名或者接口名() {

重寫方法;

}

D:本質(zhì):

其實是繼承該類或者實現(xiàn)接口的子類匿名對象

(8)匿名內(nèi)部類在開發(fā)中的使用

我們在開發(fā)的時候琼讽,會看到抽象類必峰,或者接口作為參數(shù)。

而這個時候钻蹬,我們知道實際需要的是一個子類對象吼蚁。

如果該方法僅僅調(diào)用一次,我們就可以使用匿名內(nèi)部類的格式簡化问欠。

interface Person {

public abstract void study();

}

class PersonDemo {

public void method(Person p) {

p.study();

}

}

小編推薦一個學(xué)Java的學(xué)習(xí)裙【 六五零肝匆,五五四,六零七 】顺献,無論你是大牛還是小白旗国,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有開發(fā)工具注整,很多干貨和技術(shù)資料分享能曾!

class PersonTest {

public static void main(String[] args) {

PersonDemo pd = new PersonDemo();

pd.method(new Person() {

public void study() {

System.out.println("好好學(xué)習(xí),天天向上");

}

});

}

}

這里提供的只是曾經(jīng)學(xué)習(xí)整理的筆記,勿噴,謝謝,僅供java愛好者參考!

每日更新,請大家多多關(guān)注.謝謝!!!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肿轨,一起剝皮案震驚了整個濱河市寿冕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椒袍,老刑警劉巖驼唱,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驹暑,居然都是意外死亡玫恳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門优俘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纽窟,“玉大人,你說我怎么就攤上這事兼吓”鄹郏” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長审孽。 經(jīng)常有香客問我县袱,道長,這世上最難降的妖魔是什么佑力? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任式散,我火速辦了婚禮,結(jié)果婚禮上打颤,老公的妹妹穿的比我還像新娘暴拄。我一直安慰自己,他們只是感情好编饺,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布乖篷。 她就那樣靜靜地躺著,像睡著了一般透且。 火紅的嫁衣襯著肌膚如雪撕蔼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天秽誊,我揣著相機與錄音鲸沮,去河邊找鬼。 笑死锅论,一個胖子當(dāng)著我的面吹牛讼溺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播最易,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怒坯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了耘纱?” 一聲冷哼從身側(cè)響起敬肚,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤毕荐,失蹤者是張志新(化名)和其女友劉穎束析,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體憎亚,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡员寇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了第美。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝶锋。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖什往,靈堂內(nèi)的尸體忽然破棺而出扳缕,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布躯舔,位于F島的核電站驴剔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏粥庄。R本人自食惡果不足惜丧失,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惜互。 院中可真熱鬧布讹,春花似錦、人聲如沸训堆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蔫慧。三九已至挠乳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姑躲,已是汗流浹背睡扬。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留黍析,地道東北人卖怜。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像阐枣,于是被迫代替她去往敵國和親马靠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法蔼两,類相關(guān)的語法甩鳄,內(nèi)部類的語法,繼承相關(guān)的語法额划,異常的語法妙啃,線程的語...
    子非魚_t_閱讀 31,639評論 18 399
  • 一:java概述:1,JDK:Java Development Kit俊戳,java的開發(fā)和運行環(huán)境揖赴,java的開發(fā)工...
    ZaneInTheSun閱讀 2,654評論 0 11
  • **Question: '.' Matches any single character.'*' Matches ...
    Richardo92閱讀 531評論 0 1
  • 就在剛剛給爸爸打電話,已經(jīng)不記得是第幾個沒有團圓的元宵節(jié)了抑胎,以前只是想爸爸而已燥滑,觸景生情吧,可是想到的卻是為什么會...
    亖年閱讀 126評論 0 0
  • 起風(fēng)了阿逃。 油菜花在風(fēng)中晃蕩铭拧,明晃晃的金黃嫵媚中透著噴薄的朝氣赃蛛。她扭動的腰姿這般招搖,定會招來不少嫉妒吧搀菩『嘎玻可她...
    赫蓮閱讀 216評論 0 0