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