java核心技术笔记
1.類(lèi)和對(duì)象
第四章:面向?qū)ο?/p>
日歷的作用是提供某個(gè)時(shí)間點(diǎn)的信息
查詢(xún)?cè)O(shè)置信息:GregorianCalendar now = new GregorianCalendar()
int month = now.get(Calendar.MONTH);//得到當(dāng)前月份
更改設(shè)置信息:GregorianCalendar deadline = new GregorianCalendar();
deadline.set(Calendar.YEAR,2001);//把時(shí)間設(shè)置為2001年
deadline.set(Calendar.MONTH,Calendar.APRIL);//將時(shí)間設(shè)為5月
deadline.set(Calendar.DAY_OF_MONTH,15);
設(shè)置年月的方法:deadline.set(2001,Calendar.APRIL,15);//把時(shí)間設(shè)置為5月15日
為給定的日期增加天數(shù):deadline.add(Calendar.MONTH,3)//增加3個(gè)月
更改器方法:對(duì)實(shí)例域做出修改的方法
訪(fǎng)問(wèn)器方法:對(duì)實(shí)例域不能進(jìn)行修改的方法
顯示當(dāng)月日歷:
1.構(gòu)造一個(gè)日歷對(duì)象,并用當(dāng)前日期和時(shí)間進(jìn)行初始化。
2.將d設(shè)置為這個(gè)月的第一天,并得到這一天為星期幾weekday,
如果這一天為星期日,就將weekday設(shè)置為Calendar.SUNDAY
3.getFirstDayOfWeek()的方法獲得當(dāng)?shù)氐男瞧诘钠鹗既掌?,如果weekday不等于firthweekday日期,往前縮進(jìn),weekday在賦值為這個(gè)月的week
4.得到星期的格式并打印,
自定義簡(jiǎn)單的類(lèi):
想要要?jiǎng)?chuàng)建一個(gè)完整的程序,應(yīng)該將若干類(lèi)組合在一起,其中只有一個(gè)有main()方法。(方法在前面,定義變量的域在后面,更加關(guān)注接口消除了對(duì)實(shí)現(xiàn)的的注意)。
兩個(gè)類(lèi)寫(xiě)在同一個(gè)文件里面時(shí),編譯后會(huì)產(chǎn)生兩個(gè)class文件。編譯器發(fā)現(xiàn)一個(gè)類(lèi)使用另一個(gè)類(lèi)時(shí),會(huì)自動(dòng)查找另一個(gè)類(lèi)的class文件,如果沒(méi)有,自動(dòng)搜索Java文件,然后編譯。
構(gòu)造器(構(gòu)造函數(shù)):構(gòu)造器名與類(lèi)名相同,總是伴隨著new操作符的執(zhí)行被調(diào)用,沒(méi)有返回值,可以后0,1個(gè)以上的參數(shù)。
私有方法:如果改用其他方法實(shí)現(xiàn)相應(yīng)的操作,則不比保留原有的方法,如果數(shù)據(jù)的表達(dá)方式發(fā)生了變化,這個(gè)方法就變得難以實(shí)現(xiàn),或者不在需要。
靜態(tài)方法:靜態(tài)方法是一種不能向?qū)ο髮?shí)施操作的方法,Math.opow(x,a);x的a次冪,靜態(tài)方法是沒(méi)有this參數(shù)的方法,不能操作對(duì)象,不能在靜態(tài)方法中訪(fǎng)問(wèn)實(shí)例域。
一個(gè)方法不需要訪(fǎng)問(wèn)對(duì)象狀態(tài),其所需要參數(shù)都是通過(guò)顯示參數(shù)提供
一個(gè)方法只需要訪(fǎng)問(wèn)類(lèi)的靜態(tài)域、
一個(gè)方法不能修改一個(gè)基本數(shù)據(jù)類(lèi)型的參數(shù)
一個(gè)方法可以改變一個(gè)對(duì)象參數(shù)的狀態(tài)
一個(gè)方法不能實(shí)現(xiàn)讓對(duì)象參數(shù)引用一個(gè)新的對(duì)象
對(duì)象的構(gòu)造:
重載:方法名相同,參數(shù)不同,編譯器會(huì)根據(jù)參數(shù)類(lèi)型和特定方法調(diào)用所使用的值類(lèi)型進(jìn)行匹配來(lái)挑選相對(duì)應(yīng)的方法,如果編譯器找不到對(duì)應(yīng)的匹配參數(shù),或者找出多個(gè),會(huì)產(chǎn)生編譯錯(cuò)誤
默認(rèn)構(gòu)造器:默認(rèn)構(gòu)造函數(shù),如果不寫(xiě),程序會(huì)提供一個(gè)空的構(gòu)造函數(shù)。
顯示域初始化:類(lèi)的構(gòu)造器可以重載,所以可以采用多種形式設(shè)置的實(shí)例域的初始狀態(tài),確保不管怎樣調(diào)用構(gòu)造器,每個(gè)實(shí)例域都有一個(gè)有意義的初值。
調(diào)用構(gòu)造器的具體處理步驟:
所以數(shù)據(jù)域均被初始化為默認(rèn)值
按照在類(lèi)中聲明出現(xiàn)的次序,依次執(zhí)行所有域初始化語(yǔ)句和初始化塊
如果構(gòu)造器第一行調(diào)用了第二個(gè)構(gòu)造器,則執(zhí)行第二構(gòu)造器主體
執(zhí)行這個(gè)構(gòu)造器的主體
類(lèi)的設(shè)計(jì)技巧:
一定將數(shù)據(jù)設(shè)為私有,絕對(duì)不要破壞封裝性。
一定要對(duì)數(shù)據(jù)初始化,Java不會(huì)對(duì)局部變量進(jìn)行初始化化,會(huì)對(duì)對(duì)象的實(shí)例域初始化。
不要再類(lèi)中使用過(guò)多的基本類(lèi)型,用其他的類(lèi)代替多個(gè)相關(guān)的基本數(shù)據(jù)類(lèi)型。
不是所有的域都需要獨(dú)立的域訪(fǎng)問(wèn)器和域更改器。
使用標(biāo)準(zhǔn)的格式進(jìn)行類(lèi)的定義:類(lèi)的順序:
a) 公有訪(fǎng)問(wèn)特性部分
b) 包作用域訪(fǎng)問(wèn)特性
c) 私有域訪(fǎng)問(wèn)特性
類(lèi)中每一部分:
實(shí)例方法
靜態(tài)方法
實(shí)例域
靜態(tài)域
將職責(zé)過(guò)多的類(lèi)進(jìn)行分解
類(lèi)名和方法名要能體現(xiàn)他們的職責(zé)
繼承:
Super:調(diào)用父類(lèi)所需要的關(guān)鍵字,使用super調(diào)用構(gòu)造器的語(yǔ)句必須是子類(lèi)構(gòu)造器的第一條語(yǔ)句。
多態(tài):一個(gè)變量可以引用多種實(shí)際類(lèi)型的現(xiàn)象,在運(yùn)行時(shí)能夠自動(dòng)地選擇調(diào)用哪個(gè)方法的現(xiàn)象叫動(dòng)態(tài)綁定。特性:無(wú)需要對(duì)現(xiàn)存的代碼進(jìn)行修改,就可以對(duì)程序進(jìn)行擴(kuò)展呢
多態(tài):
父類(lèi)的對(duì)象可以引用子類(lèi)的對(duì)象。
抽象類(lèi)不能創(chuàng)建這個(gè)類(lèi)的對(duì)象,但是可以創(chuàng)建一個(gè)具體子類(lèi)的對(duì)象
Error: new Person(“Vincent vu ”);
Right:Person p = new Student(“vience vu”,“Economics”);
Equals方法:用于檢測(cè)一個(gè)對(duì)象是否等于另外一個(gè)對(duì)象。判斷是否具有相同的引用,如果具有相同的引用,他們一定是相等的,檢測(cè)兩個(gè)對(duì)象的狀態(tài)相等。
完美教程:1.顯式參數(shù)命名為otherobject,稍后會(huì)將他轉(zhuǎn)換成一個(gè)叫other的變量
2.檢測(cè)this與otherobject是否是引用同一個(gè)變量
3.檢測(cè)otherobject是否為null,如果為null,返回false
4.比較this與otherobject是否屬于同一個(gè)類(lèi),如果equals的語(yǔ)義在每個(gè)子類(lèi)中有所改變,就用getclass,所有子類(lèi)都擁有統(tǒng)一的語(yǔ)義,就使用instanceof檢測(cè)。
5.將otherobject轉(zhuǎn)換成相應(yīng)的類(lèi)類(lèi)型變量
6.現(xiàn)在開(kāi)始對(duì)所有需要比較的域進(jìn)行比較,使用==比較基本類(lèi)型域,使用equals比較對(duì)象域,如果所有的域都匹配,則返回true,否則返回false
對(duì)象包裝器和自動(dòng)打包:
接口:
Arrays類(lèi)中的sort方法承諾可以對(duì)對(duì)象數(shù)組進(jìn)行排序,但要求滿(mǎn)足下列前提,對(duì)象所屬的類(lèi)必須實(shí)現(xiàn)了comparab接口,也就是說(shuō)任何實(shí)現(xiàn)comparable接口的類(lèi)都需要包含compareTo方法,并且這個(gè)方法的參數(shù)必須是一個(gè)object對(duì)象,返回一個(gè)整形數(shù)值。
回調(diào):指出某個(gè)特定事件發(fā)生時(shí)應(yīng)該采取的動(dòng)作。
內(nèi)部類(lèi):內(nèi)部類(lèi)是定義在一個(gè)類(lèi)中的類(lèi),定義內(nèi)部類(lèi)的原因:內(nèi)部類(lèi)方法可以訪(fǎng)問(wèn)該類(lèi)定義所在的作用域中的數(shù)據(jù),包括私有數(shù)據(jù)。
內(nèi)部類(lèi)可以對(duì)同一個(gè)包中的其他類(lèi)隱藏起來(lái)
想要調(diào)一個(gè)回調(diào)函數(shù)并且不想編寫(xiě)大量代碼時(shí),使用匿名內(nèi)部類(lèi)比較便捷。
圖形程序設(shè)計(jì):
頂層窗口:Frame類(lèi)(Swing版本為jframe)
默認(rèn)關(guān)閉:frame.setDefaultCloseOperation(JFrame.Exit_on_close);
setLocation()和setBounds()設(shè)置框架的位置
setIconImage():用于告訴系統(tǒng)在標(biāo)題欄,任務(wù)欄切換窗口位置顯示的圖標(biāo)
setTitle()改變標(biāo)題欄的文字
setResizable()是否顯示
isVisible():
setVisible(Boolean b):設(shè)置窗口是否可見(jiàn)
setSize(int width,int height)設(shè)置窗口寬高
Dimension getSize()
Void setSize()獲取或者設(shè)置當(dāng)前組件的size屬性
toFront將窗口顯示到其他窗口前面
toBack()將窗口移到桌面窗口棧的后面
isLocationByPlatfrom()
setLocationByPlatfrom()設(shè)置或者獲取LocationByPlatfrom的屬性,屬性在窗口顯示之前被設(shè)置
Container getContentPane()返回這個(gè)JFrame的內(nèi)容窗格對(duì)象
Component add(Componen c)將一個(gè)給定的組件添加到該框架的內(nèi)容格
Void repaint()從新繪制組件
Void repaint(int x.int y,int width,int height)從新繪制組件的一部分
PaintComponent(Grphics g)覆蓋這個(gè)方法來(lái)描述應(yīng)該來(lái)如何繪制自己的組件
創(chuàng)建一個(gè)二維圖形:
Graphics2D g2 = (Graphics2D) g;創(chuàng)建一個(gè)繪圖方法的對(duì)象,
創(chuàng)建一個(gè)矩形對(duì)象:Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);
通過(guò)繪圖方法把矩形繪畫(huà)出來(lái),g2.draw(rect);
創(chuàng)建一個(gè)橢圓對(duì)象:Ellipse2D ellipse = new Ellipse2D.Double();
在矩形內(nèi)部畫(huà)一個(gè)橢圓:ellipse.setFrame(rect);
通過(guò)繪圖的方法把圖形畫(huà)出來(lái):g2.draw(ellipse);
把畫(huà)圖組件添加到窗體上面: DrawComponent component = new DrawComponent();
add(component);
jdbc:
我們可以將JDBC包看作一個(gè)用于將sql語(yǔ)句傳遞給數(shù)據(jù)庫(kù)的應(yīng)用編程的接口。
Jdbc語(yǔ)法的實(shí)例:jdbc:derby://localhost:1527/COREJAVA;creat=true
Jdbc:postgresql:COREJAVA
JDBC URL的一般語(yǔ)法:jdbc:subprotocol:other stuff
Subprotocol用于指明連接到數(shù)據(jù)庫(kù)的特定驅(qū)動(dòng)程序
Other stuff參數(shù)的格式隨所用的subproyocol不同而不同
總結(jié)
以上是生活随笔為你收集整理的java核心技术笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 利用selenium登陆163邮箱并发送
- 下一篇: TP5.1:连接数据库(全局配置、动态配