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