期末不挂科のJAVA
文章目錄
- JAVA主要特征
- JAVA名詞解釋
- JAVA輸出
- JAVA輸入
- JAVA標識符(命名字符)
- 數據類型
- 基本類型
- 引用類型
- 類型轉換
- 增強型for
- **數組**
- Arrays類
- 類與對象
- 類的定義
- 對象的實例化
- 值傳遞和引用傳遞(參數是基本類型不能改變原值)
- 方法重載
- 構造方法
- this關鍵字
- 繼承的實現
- 繼承規則
- 構造方法的調用:
- Super關鍵字
- 方法重寫
- 重寫規則
- JAVA的包
- 抽象類
- 接口
- 接口的實現
- 接口的繼承
- Object 類中的方法
- Equals方法
- hashCode() 方法
- toString 方法
- 多態
- 包裝器類
- 創建包裝器類型
- 包裝器轉換為基本數據類型
- 重載方法調用規則:
- 靜態屬性
- 靜態方法
- 使用規則(類內部)
- 靜態代碼塊
- 異常
- 異常處理機制
- 字符串
- String類
- StringBuffer類
- 容器
- ArrayList 動態數組
- LinkedList 雙向鏈表
- HashSet
- LinkedHashSet 以元素插入順序
- Map
- 字節流
JAVA主要特征
- 面向對象
- 分布式
- 跨平臺
- 更安全
JAVA名詞解釋
-
JRE(運行環境)
包括JAVA虛擬機和JAVA程序所需的核心類庫 -
JDK(開發工具包)
JDK是提供給JAVA開發人員使用的,其中包含了JAVA的開發工具,也包括了JRE。 -
JVM(虛擬機)
Java程序不是直接運行在操作系統上,而是運行在JVM上。 -
JAVAEE(企業版)
是為開發企業環境下的應用程序提供的一套解決方案。 -
JAVASE(標準版)
是為開發普通桌面和商務應用程序提供的解決方案。 -
JAVAME(小型版) 是為開發電子消費產品和嵌入式設備提供的解決方案。
JAVA輸出
- System.out.println() 換行輸出
- System.out.print() 正常輸出
- System.out.printf() 類C輸出
JAVA輸入
Scanner in = new Scanner(System.in) int num = in.nextInt(); //讀取整數 double num = in.nextDouble(); //讀取小數 String str = in.nextLine() //讀取一整行JAVA標識符(命名字符)
- 只能以字母,“_”,“$”開頭
- 只能由數字,字母,“_”,“$”組成
- 不能是關鍵字
- 類和接口名:每個單詞首字母大寫
- 方法名:首字母小寫,其余單詞首字母大寫
- 常量名:全部使用的大寫字母,單詞間用“_”分隔
用final 關鍵字來定義常量,被賦值后值不再改變
數據類型
基本類型
- 整數類型:byte,short,int,long(1,2,4,8)
- 浮點類型:double,float(8,4)
- 字符類型:char(2)可以存儲漢字
- 布爾類型:boolean 只有true和false
引用類型
- 類
- 接口
- 數組、枚舉
類型轉換
隱式轉換:類型加寬轉換時可以自動實現
強制轉換:double f = 5.5; int n = (int) f;
Byte,short,char之間不會相互轉換,計算時首先轉換為int
增強型for
- for(int element:arr)
{
System.out.println(element);
} - for(String str: list)
{
System.out.println(str);
}
數組
長度固定不可變,同一個數組存儲相同類型的元素
靜態初始化:
動態初始化:
int[] series = new int[4]; for(int I = 0;i<4;i++){series[i]=i*3; }Arrays類
copyOf(int[] a ,newlength) 數組復制
fill(int[] a ,int val) 數組初始化
sort(int[] a) 數組排序
binarySearch(int[] a,int key) 排序后的數組元素查找
類與對象
類:包含成員屬性和成員方法的抽象數據類型
對象:按照類類型創建的實例
面向對象的三大特性:封裝、繼承、多態
封裝性:將屬性和方法結合起來,僅對外公開接口實現信息隱藏
繼承性:使子類具有父類的各種屬性和方法,提高了代碼重用率
多態性:相同操作作用于不同類的對象,產生不同結果
類的定義
[private/protected/public] class (首字母大寫)類名{}
成員屬性一般用private來修飾
訪問成員屬性的方法用public來修飾
對象的實例化
<類名> <對象名> = new <類名>(參數)
訪問屬性:<對象名>.<屬性名>
訪問方法:<對象名>.<方法名>(參數)
值傳遞和引用傳遞(參數是基本類型不能改變原值)
值傳遞:
public class Arithmetic {public static void main(String[] args) {double percent = 10.0;System.out.println("before fun call percent = "+percent);tripleValue(percent);System.out.println("after fun call percent = "+percent);}public static void tripleValue(double x){x = 3 * x;} }引用傳遞
public class Arithmetic {private double number;public static void main(String[] args) {Arithmetic percent = new Arithmetic();percent.number=10.0;System.out.println("before fun call percent = "+percent.number);tripleValue(percent);System.out.println("after fun call percent = "+percent.number);}public static void tripleValue(Arithmetic e){e.number = 3 * e.number;} }方法重載
同一個類中的同名方法,參數不同,稱為方法重載
構造方法
- 用于初始化對象
- 方法名與類名相同
- 參數可有可無
- 返回值不能寫void
- 創建對象時自動調用,只會調用一次
this關鍵字
- 引用本類中的屬性和方法
- 調用本類的構造方法,this()只能放在重載構造方法第一行
- 作為返回值,返回調用該方法的對象的引用
繼承的實現
[public/private/protected] class 子類名 extends 父類名稱{}
- 一個類只能有一個直接基類
- final修飾的類不能有子類,String是典型特例
- Object類時所有java類的頂級基類
繼承規則
- 吸收基類成員(除了構造方法)
- 增加派生類成員
- 隱藏同名基類成員
- 派生類只能訪問基類中非private類型的屬性或方法
構造方法的調用:
- 先調用基類的構造方法,在調用派生類的構造方法
- 若基類中沒有無參構造,程序報錯
Super關鍵字
- 調用基類的構造方法(若無,默認調用無參構造)
只能放在派生類構造方法的第一行 - 引用基類的屬性或方法(非private類)
方法重寫
在不改變原來代碼的基礎上,對任意模塊進行改造
- 只出現在繼承關系中,只能重寫繼承的基類方法
- 繼承的抽象方法,要么重寫,要么標識為抽象
重寫規則
- 返回值相同或是原類型子類
- 方法名,參數列表相同
- 不能重寫final的方法,私有的方法
- 重寫的方法不能縮小訪問權限
父類的引用可以調用子類的對象
Father f1 = new Son();
可以調用基類中定義的屬性和方法
不能調用子類中定義但父類中沒有的方法
JAVA的包
- Java.lang 核心包
- Java.net 網絡包
- Java.io 文件流包
- Java.util 工具包
抽象類
-
不能實例化對象,可以定義抽象方法
-
抽象方法沒有方法體,大括號也不能寫
-
繼承抽象類的派生類必須實現所有抽象方法,否則也為抽象類
接口
只包含常量和方法的聲明
接口的實現
- 一個類可以同時實現多個接口,接口名用“,”分開
- 一個接口可以被多個無關類實現
必須實現所有抽象方法,否則也為抽象類
接口的繼承
一個接口可以繼承多個接口
Object 類中的方法
Equals方法
原方法為判斷是否具有相同的引用
重寫方法為
- 先判斷是否為同一個對象(==)
- 判斷是否為空
- 判斷是否為同類(getClass())
- 用equals()判斷需要判等的屬性
hashCode() 方法
返回該對象的哈希碼值,對于同一對象哈希碼值相同
toString 方法
返回該對象的字符串表示,建議重寫該方法
getClass().getName()+’@’+Integer.toHexString(hashCode())
多態
- 概念:同一操作作用于不同類的對象,結果不同
- 向上轉型:父類的引用指向子類的對象
- 基類中定義的方法,如果派生類重寫了,執行重寫的方法
- 無法調用基類中沒有派生類中有的方法
- 可維護性,可擴展性
包裝器類
基本類型的對象形式,一旦賦值不能改變
byte --> Byte
short --> Short
long -->Long
int -->integer
char -->character
float -->Float
double -->Double
boolean -->Boolean
創建包裝器類型
- Integer i = new Integer(1);
- Double d = Double.valueOf(3.14);
包裝器轉換為基本數據類型
裝箱與拆箱
自動裝箱
Integer y = new Integer(567); y++; //注意y++之前和之后所引用的內存地址不同重載方法調用規則:
直接?加寬?裝箱?先裝箱后加寬?有不定長參數
靜態屬性
- 權限修飾符 static 數據類型 屬性名稱
- 所有實例對象共享一個靜態屬性,實現數據共享
- 既可以用類名訪問,也可以用對象名訪問
靜態方法
只能用于訪問靜態屬性
目的是在實例化對象前就能夠訪問靜態屬性
不能是抽象的
權限修飾符 static 返回值類型 方法名(形式參數列表){}
使用類名.方法名使用
不調用不執行
使用規則(類內部)
- 僅能調用其他靜態方法
- 僅能訪問靜態屬性
- 不能使用this super
靜態代碼塊
初始化靜態屬性
僅在該類被加載時執行一次
子類實例化對象順序:父類靜態代碼塊,子類靜態代碼塊
父類構造方法,子類構造方法
Static final 修飾常量或不可重寫的方法(全局變量)
異常
異常處理機制
捕獲異常(try-catch-finally)
try{
//接受監視的程序塊
//由catch中指定的程序處理
}catch(Exception e){
//處理異常
} finally{
//資源回收
}
拋出異常(throw,throws)
沿著調用層次向上傳遞異常
字符串
String類
值不可改變,用于字符串常量
字符串連接 concat(String str)
字符串查找 indexOf(String str)
lastIndexOf(String str)
字符串分割Split(String regex)
字符串比較compareTo(String str),返回首個不相同字母的ASCII碼差值
忽略大小寫equalsIsIgnoreCase(String str)
字符串替換replace(char oldChar,char newChar)
字符串求子串 substring(int beginIndex,int endIndex)
大寫 toUpperCase()
小寫 toUpperCase()
StringBuffer類
對象的值可以修改,主要用于字符串做大量修改操作時
StringBuffer stringBuffer = new StringBuffer(“Hello”);
字符串拼接append(Object obj)
字符串刪除delete(int start,int end)
字符串插入insert(int offset,Object obj)
字符串逆序reverse()
轉換為String對象:toString()
容器
ArrayList 動態數組
ArrayList list = new ArrayList();
list.add(int index,E e)
list.add(e)
list.remove(int index)
list.get(int index);
list.set(int index,E e)
list.size
LinkedList 雙向鏈表
HashSet
無序
不關心順序,不允許重復
不能存儲equals相同的數據
添加指定元素add(E e)
移除所有元素clear()
移除指定元素remove(Object o)
大小size()
判空isEmpty()
TreeSet
升序
返回最低元素first()
返回最高元素last()
LinkedHashSet 以元素插入順序
Map
Key不允許有重復,value允許有重復
hashMap是非線程安全的
hash.put(K key,V value)
hash.get(K key)
hash.containsKey(K key)
hash.containsValue(V value)
遍歷map
Set keySet = hashMap.keySet();
for(Integer key:keySet){
Student value = hashMap.get(key);
System.out.println("key: “+key+”==value: "+value);
}
字節流
字節輸入流讀取字節InputStream
InputStream input = new InputStream(new File()); int i = 0; while(i!=-1){i=input.read(); } Input.close();字節輸出流寫入字節OutputStream
I
字符流(純文本)
- 字符輸入流讀取字符 Reader
- 字符輸出流寫入字符 Writer
總結
以上是生活随笔為你收集整理的期末不挂科のJAVA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 考前自学系列·计算机组成原理·存储器画图
- 下一篇: 好好学python·基本数据类型