java學習總結~
面向對象程序設計常用的七種術語
對象(object):是系統中 用來描述客觀事物的一個實體, 是構成系統的一個基本單位, 由一組屬性和施加於這組屬性的 一組操作構成。
對象之間的關系有包含,繼承和關聯
例:當對象A是對象B的組成部分時,稱對象B包含對象A
當對象A是對象B的特例時,稱對象A繼承了對象B
當對象A擁有(使用)對象B時,稱對象A和對象B之間是關聯關系
屬性:用來描述對象靜態特征 (狀態)的一個數據項 (專業術語:成員變量)
屬性一般就是成員變量,屬性的定義規則是:set/get方法名,去掉set/get后,將剩余部分首字母小寫得到的字符串就是這個類的屬性。
操作:用來描述對象動態特 征(行為)的一個動作系列。 (專業術語:方法)
太多了不一一列舉了。
類:(class):是具有相同屬性和操作的一組對象的集合, 它為屬於該類的全部對象提供了統一的抽象描述,由一個類名、一組屬性和一組操作構成
封裝:就是把對象的屬性和操作結合成一個獨立的系統單位,並盡可能隱藏對象的內部細節
什么是封裝哪?
封裝把對象的所有組成部分組合在一起,封裝定義程序如何引用對象的數據,封裝實際上使用方法將類的數據隱藏起來,控制用戶對類的修改和訪問數據。 適當的封裝可以讓程式碼更容易理解和維護,也加強了程式碼的安全性。
繼承:是指特殊類(子類)可以自動擁有一般類(父類)的全部屬性和操作。特殊類可以有自己定義的屬性和操作,繼承關系是代代傳遞的。
繼承的特點:
1.只支持單繼承,即一個子類只允許有一個父類。
2. 子類可以擁有父類的屬性和方法
3. 子類可以擁有自己的屬性和方法
4. 子類可以重寫覆蓋父類的方法
繼承的類別
- 排序類-實現排序
- 反轉類-實現數據反向存放
注意事項
- 可以繼承父類的public和protected成員變量;不能夠繼承父類的private成員變量
- 訪問權限成員變量的時候只有子類和父類在同一個包下才能繼承
- 子類不能繼承父類的構造器
多態:是指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數據類型或表現 出不同的行為。
繼承
繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。繼承可以單繼承也可以多繼承
繼承的特點:
1.只支持單繼承,即一個子類只允許有一個父類。
2. 子類可以擁有父類的屬性和方法
3. 子類可以擁有自己的屬性和方法
4. 子類可以重寫覆蓋父類的方法
繼承的類別
- 排序類-實現排序
- 反轉類-實現數據反向存放
注意事項
- 可以繼承父類的public和protected成員變量;不能夠繼承父類的private成員變量
- 訪問權限成員變量的時候只有子類和父類在同一個包下才能繼承
- 子類不能繼承父類的構造器
This關鍵字與super關鍵字(重復)
This關鍵字的作用
(1)如果存在同名的成員變量與局部變量時,在方法內部默認是訪問局部變量的數據可以通過this關鍵字指定訪問成員變量的數據;
(2)在一個構造函數中可以調用另外一個構造函數初始化對象;
Super關鍵字的作用
(1) 子父類存在着同名的成員(包括變量和方法)時,在子類中默認是訪問子類的成員,可以通過super關鍵字指定訪問父類的成員;
(2) 創建子類對象時,默認會先調用父類無參的構造方法,可以通過super關鍵字指定調用父類的構造方法。
區別
1.代表的事物不一致。
super關鍵字不能代表對象,只是代表一個對象中的一塊內存。
this關鍵字代表的是所屬函數的調用者對象。
2.使用前提不一致。
super關鍵字必須要有繼承關系才能使用。
this關鍵字不需要存在繼承關系也可使用
3. 調用構造函數的區別:
super關鍵字是調用父類的構造函數。
this關鍵字是調用本類的構造函數。
注意事項
super與this關鍵字不能同時出現在同一個構造函數中調用其他的構造函數。因為兩個語句都需要第一個語句。(例子 main方法不能同時使用this,super)
Final關鍵字
使用final聲明類不能有子類,聲明的方法不能被子類所覆寫,聲明的變量是常量不能修改。
抽象類
1.Java中所有的對象都是通過類來描繪的,但是並不是所有的類都是用來描繪對象的,如果一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。 抽象類中類的其它功能依然存在,但是不能實例化對象。由於抽象類不能實例化對象,所以抽象類必須被繼承,才能被使用。
2.Java中抽象類表示的是一種繼承關系,一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。
StringBuffer對象的初始化的兩種方法
reverse方法(StringBuffer對象中的內容反轉,然后形成新的字符串)
setCharAt方法(修改對象中索引值為index位置的字符為新的字符ch)
抽象類
抽象類和接口的區別
1. 抽象類中的方法可以有能實現方法的具體功能方法體,但是接口中不能有方法體。
2. 抽象類中的成員變量不限制類型,而接口中的成員變量只能是 public static final 類型的。
3. 一個類只能繼承一個抽象類,而一個類卻可以實現多個接口。
object類
Object類是所有類的父類,聲明一個Object類的作用就是可以傳遞任何類型的類來使用。
Object是所有類的父類,它有很多類對象會用到的方法,例如比較常用的toString 、equals。
寫封裝方法的時候不確定傳進來的值的類型,就可以使用Object作為類
接口
接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個類通過繼承接口的方式,從而來繼承接口的抽象方法。
實現接口:
class 子類 implements 接口A,接口B,...{}
繼承抽象類實現接口:
class 子類 extends 抽象類 implements 接口A,接口B,...{}
接口的繼承:
interface 子接口 extends 父接口A,父接口B,...{}
2.throws表示出現異常的一種可能(不一定會發生這些異常),throwthrow則一定拋出了某種異常對象。
繼承Thread類的,就是將任務分給每一個對象來分別完成,因為MyThread繼承Thread類,所以在new MyThread的時候在創建對象的同時創建線程;
實現Runnable的, 就是將任務分給多個對象共同完成,new MyThread相當於創建一個任務,然后實例化多個對象,創建線程即安排窗口執行。
try 和 catch 關鍵字是用來捕獲異常的關鍵字
Catch 語句包含要捕獲異常類型的聲明。當保護代碼塊中發生一個異常時,try 后面的 catch 塊就會被檢查。
Throwable的子類Exception類與RuntimeException類的區別
1、Exception在程序中是必須使用try…catch進行處理。
2、RuntimeException可以不使用try…catch進行處理,但是出現異常要給JVM進行處理
1、定義實現Runnable接口的類,並實現該類中的run()方法。
2、建立一個Thread對象,並將實現的Runnable接口的類的對象作為參數傳入Thread類的構造方法。
3、通過Thread類中的start()方法啟動線程。
java io
字節流
字節流以操作byte類型數據為主,主要操作類為OutputStream類和InputSream類。
1.字節輸出流OutputStream是整個IO包中字節輸出流最大父類,
2.字節輸入流InputSream為抽象類,需依靠子類
字符流
相同點
字符輸出流Writer,字符輸入流Reader都是是抽象類,詳細見書p390
不同點
1.字節流在操作的時候是與文件本身直接操作的,而字符流在操作的時候是使用到緩沖區的。
2. 字符流要使用close方法的話,則不會輸出任何內容。字符流的緩沖區,可以使用flush方法強制進行刷新緩沖區,這時可以在不close的情況下輸出內容。
字節流-字符流的轉換類
OutputStreamWriter:是Writer的子類,將輸出的字符流轉換為字節流。即:將一個字節流的輸出對象變為字節流的輸出對象
InputStreamReader:是Reader的子類,將輸入的字節流變為字符流,即:將一個字節流的輸入對象變為字符流的輸入對象。
FileInputStream 常用的構造方法重載形式
FileInputStream:通過打開一個到實際文件的連接來創建一個 FileInputStream,該文件通過文件系統中的 File 對象 file 指定。
FileInputStream:通過打開一個到實際文件的鏈接來創建一個 FileInputStream,該文件通過文件系統中的路徑名 name 指定。
轉換流
OutputStreamWriter 是字符流通向字節流的橋梁:可使用指定的字符編碼表,將要寫入流中的字符編碼成字節,將字符串按照指定的編碼表轉成字節,在使用字節流將這些字節寫出去。
內存流
字節數組
ByteArrayInputStream是字節數組輸入流,在內存中創建了一個字節數組,將輸入流中讀取的數據保存到字節數組的緩存區中.也就是說字節數組輸入流將讀取數據放到字節數組緩沖區中.
ByteArrayOutputStream是創建緩沖區用的類
例 OutputStream bOut = new ByteArrayOutputStream(int a) 創造一個大小為n字節的緩沖區
字符數組
CharArrayReader類實現一個可用作 Writer 的字符緩沖區。緩沖區會隨向流中寫入數據而自動增長,可使用 toCharArray() 和 toString() 獲取數據。
CharArrayWriter類用於將子u寫入到內置字符緩存數組中
成功創建字節數組輸出流對象后的操作
字符串
StringReader:只有一個版本的構造方法,接受一個String作為參數
StringWriter:StringWriter內部有兩個版本的構造方法
管道流
PipedOutputStream和PipedInputStream分別是管道輸出流和管道輸入流。這個兩個流必須同時使用。
打印流
打印流為輸出信息最方便的類,其包括PrintStream類和PrintWriter類。
PrintStream 類
提供了打印方法可以對多種數據類型進行打印,並保持數據的表現形式。
它接收三種類型的值:字符串路徑,File對象,字節輸出流。
PrintWriter類
就非常實用的一種,很多地方都可以用到(不知道怎么說)
JAVA使用AWT和Swing 類完成圖形用戶界面編程
Swing
Swing 是一個為Java設計的GUI工具包,是JAVA基礎類的一部分。
Swing包括了圖形用戶界面(GUI)器件:文本框,按鈕,分隔窗格和表。
AWT
AWT全稱是抽象窗口工具集(Abstract Window Toolkit),它是最早的sun提供的GUI庫(Graphics User Interface)圖形用戶界面。AWT提供了JavaApplet和Java Application中可用的用戶圖形界面GUI中的基本組件(components)。由於Java是一種獨立於平台的程序設計語言,但GUI卻往往是依賴於特定平台的.它的功能包括: 用戶界面組件;事件處理模型;圖形和圖像工具,包括形狀、顏色和字體類;布局管理器。
AWT與Swing的區別
1.Swing 不僅提供了AWT 的所有功能,還用純粹的Java代碼對AWT的功能進行了大幅度的擴充。
2.Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,所以同Java本身一樣可以跨平台運行,這一點不像AWT。
3.Swing的缺點則是執行速度較慢,優點就是可以在所有平台上采用統一的行為。
常用的概念解析
JFrame – java的GUI程序的基本思路是以JFrame為基礎,它是屏幕上window的對象,能夠最大化、最小化、關閉。
JPanel – Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合,是一種輕量級容器,可以加入到JFrame窗體中。。
JLabel – JLabel 對象可以顯示文本、圖像或同時顯示二者。可以通過設置垂直和水平對齊方式,指定標簽顯示區中標簽內容在何處對齊。默認情況下,標簽在其顯示區內垂直居中對齊。默認情況下,只顯示文本的標簽是開始邊對齊;而只顯示圖像的標簽則水平居中對齊。
JTextField –一個輕量級組件,它允許編輯單行文本。
JPasswordField – 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點創建密碼(密碼)
JButton – JButton 類的實例。用於創建按鈕類似實例中的 "Login"。
Java GUI API
GUI API包含的類可以分為三個組:組件類(component class),容器類(container class),輔助類(helper class)
組件類是創建用戶界面的。容器類是用來包含其他組件的。輔助類是用來支持GUI組件的。
布局管理器
常用的布局管理器類型(詳細操作方法見書)
1.FlowLayout( 流式布局管理器):是最簡單的布局管理器。按照組件添加的順序,從左到右地將組件排列在容器中。
2.BorderLayout (邊界布局管理器):是一個布置容器的邊框布局,它可以對容器組件進行安排,並調整其大小,使其符合下列五個區域:北、南、東、西、中,且每個區域最多只能包含一個組件。
3.GrideLayout (網格布局管理器):是以網格的形式管理組件,使用前需要設置顯示行數和列數(先滿足行,再調列),如果有多出的組件則要固定增加一列。
4.CardLayout(卡片布局管理器): 是由一組組件彼此重疊進行布局的,缺點是每次只顯示一個界面
JPanel
Java圖形用戶界面(GUI)工具包swing中的面板容器類,包含在javax.swing 包中,可以進行嵌套,功能是對窗體中具有相同邏輯功能的組件進行組合,是一種輕量級容器,可以加入到JFrame窗體中。
JScrollPane
JScrollPane類可提供輕量級組件的 scrollable 視圖。JScrollPane 管理視口、可選的垂直和水平滾動條以及可選的行和列標題視口。
JTabbedPane
JTabbedPane選項卡面板實現了一個多卡片的用戶界面,通過它可以將一個復雜的對話框分割成若干個選項卡,實現對信息的分類顯示和管理,使界面更簡潔大方,還可以有效地減少窗體的個數。
JSplitPane (水平或垂直分割面板)
ifsplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,組件一,組件二)
ifsplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT,組件一,組件二)
JScrollPane(設置滾動條)
static final HORIZONTAL_SCROLLBAR_ALWAYS 始終顯示水平滾動條
static final VERTICAL_SCROLLBAR_ALWAYS 始終顯示垂直滾動條
static final HORIZONTAL_SCROLLBAR_NEVER 任何情況下都不顯示水平滾動條
static final VERTICAL_SCROLLBAR_NEVER 任何情況下都不顯示垂直滾動條
static final HORIZONTAL_SCROLLBAR_AS_NEEDED 根據自生需要來顯示水平滾動
static final VERTICAL_SCROLLBAR_AS_NEEDED 根據自生需要來顯示垂直滾動條
其他類
GridLayout類:網格布局類,將容器划分為網格,所以組件可以按行和列進行排列,在網格布局中,每一個組件的大小都相同。
Dimension類:封裝組件寬度高度類,可以通過組件對象.setPreferredSize(new Dimension(width,hight))來控制組件的大小。
ImageIcon類:圖片類,可以用來加載磁盤上的圖片。使用方法為ImageIcon image=new ImageIcon("圖片地址")。
FlowLayout類:流式布局類(JPanel組件默認的布局類:流式居中布局),即從左至右,從上至下的布局類。
JTextPanel類 : 是一個可以編輯和顯示html,rtf和普通文本的富文本組件,能實現的功能較多。
BorderLayout類:邊框布局類(JFrame組件的默認布局類),即分為東南西北。
JComboBox類:是一個組件,它結合了一個按鈕或可編輯字段與下拉列表。
事件處理
事件就是表示一個對象發生狀態變化;事件接收對象被稱為事件監聽器,所有的事件監聽器都是以監聽接口的形式出現的。當然單單只有一個監聽器是不夠的,還需要在組件使用時注冊監聽,這樣才可以處理。在實現類和接口之間增加一個過渡的抽象類,子類繼承抽象類就可以根據自己的需要進行方法的覆寫,了解了動作事件之后,就可以使用此事件完成一個簡單的用戶登錄操作。
處理事件的接口
監視器負責處理事件源發生的事件,監視器是一個對象,為了處理事件源發生的事件,監視器這個對象會自動調用一個方法來處理事件。被調用的這個方法就是所說的處理事件的接口中的方法。
WindowListener接口中定義的方法
void windowOpened(WindowEvent e) 打開窗口
void windowActivated(WindowEvent e) 激活窗口
void windowClosed(WindowEvent e) 關閉窗口
void windowDeiconified(WindowEvent e) 還原窗口
void windowClosing(WindowEvent e) 正在關閉窗口
void windowDeactivated(WindowEvent e) 變為非活動窗口
void windowIconified(WindowEvent e) 最小化窗口
補充
JLabel – JLabel 對象可以顯示文本、圖像或同時顯示二者。可以通過設置垂直和水平對齊方式,指定標簽顯示區中標簽內容在何處對齊。默認情況下,標簽在其顯示區內垂直居中對齊。默認情況下,只顯示文本的標簽是開始邊對齊;而只顯示圖像的標簽則水平居中對齊。
JTextField 一個輕量級組件,它允許編輯單行文本。
JPasswordField 允許我們輸入了一行字像輸入框,但隱藏星號(*) 或點創建密碼(密碼)
JButton – JButton 用於創建按鈕類似實例中的 "Login"。
1,addTab(String title, Component component):添加一個標簽為title的選項卡
2,setTabPlacement(int tabPlacement):設置選項卡標簽的顯示位置
3,setTabLayoutPolicy(int tabLayoutPolicy):設置選項卡標簽的布局方式
4,setSelectedIndex(int index):設置指定索引位置的選項卡被選中
5, getSelectedComponent():獲取當前選中的選項卡對應的內容組件
6, removeTabAt(int index)或remove(int index):移除指定位置的選項
7, remove(Component component):移除指定內容控件的選項卡
8, removeAll():移除所有選項卡
事件處理及監聽處理
鍵盤事件
接口方法
JMenuItem 常用方法
鼠標事件
MouseListener 接口方法
MouseEvent 事件的常用方法
鼠標拖拽事件及監聽處理
在Swing中可以使用MouseMotionListener接口完成鼠標的拖拽操作
JRadioButton 事件處理(ItemListener)
JRadioButton常用方法
ItemListener接口方法
ItemEvent 類的常用方法及常量
復選框 JCheckBox
JCheckBox 類常用方法
菜單組件(JMenu 與 JMenuBar)
JMenubar 的常用方法
JMenu 的常用方法
JMenuItem 類的常用方法
ActionEvent事件
JMenuLtem繼承AbstractButton時選擇菜單項的時候會觸發ActionEvent事件
文件選擇框 JFileChooser
JFileChooser 類的常用方法
文件選擇框的三種返回狀態
JDBC
JDBC API 允許用戶訪問任何形式的表格數據,尤其是存儲在關系數據庫中的數據。
執行流程
1 連接數據源,如:數據庫。
2 為數據庫傳遞查詢和更新指令。
3 處理數據庫響應並返回的結果。
常見的類與接口
DriverManager類:用於注冊驅動(創建連接對象)。 java.sql.DriverManager;
Connection接口:表示與數據庫創建的連接 。java.sql.Connection;
Statement接口:操作數據庫sql語句的對象,並返回相應結果的對象。 java.sql.Statement;
ResultSet接口:結果集或一張虛擬表(客戶端存表數據的對象)。 java.sql.ResultSet;
一般開發步驟
I. 將Oracle驅動Jar包復制到項目中的自建lib文件夾下。
II. ojdbc6.jar 右鍵 –> build path –> add to build path。
I. 通過DriverManager.getConnection(url,user,password)獲取數據庫連接對象(Connection),提供三個實參:
1). URL:jdbc:oracle:thin:@localhost:1521:xe //Uniform Resource Locator 統一資源定位符 協議、IP、端口號、實例名(SID)
2). UserName:hr
3). Password
I. 通過Connection對象獲取Statement工具。
II. 通過Connection對象獲取PreparedStatement工具,並且傳入預編譯SQL
I. DML語句:statement.executeUpdate(sql); //受影響行數 int
II. DQL語句:statement.executeQuery(sql); //結果集 ResultSet
III PreparedStatement發送SQL,無需傳入SQL
I. DML語句:邏輯判斷
I. 遵循先開后關。
II. 關閉順序ResultSet、Statement、Connection。
加載驅動程序:
1
2
3
4
5
|
Class.forName(driverClass)
//加載MySql驅動
Class.forName( "com.mysql.jdbc.Driver" )
//加載Oracle驅動
Class.forName( "oracle.jdbc.driver.OracleDriver" )
|
獲得數據庫連接:
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc", "root", "root");
創建Statement\PreparedStatement對象:
conn.createStatement();
conn.prepareStatement(sql);
這學期學的東西基本都總結在上了 ,接下來寫一下個人總結~