Java for Android 基礎API整理
API簡析
*application programming interface 應用程式設計介面
*一切能呼叫的東西
Java.lang包
Lang=language
語言包
自動導包
String
System
Integer
Java.lang.object
Java.lang.String
Java.lang.stringBuilder
Java.lang.StringBuffer
正規表示式
Java.util.regex.pattern
Java.util.regex.Matcher
基本型別包裝類
Java.math.BigDecimal
Java.math.BigInteger
Java.text.DecimalFormat
Java.lang.Math
Java.util.data
Java.text.SimpleDtaFormat
Java.util.Calender
Java.util.GregorianCalendar
Java.lang.Object
*java的頂層父類
*一個類如果不繼承其他類
預設繼承Object
ClassA /*entends Object*/{
}
方法:
toString()
獲得物件的字串表示
預設實現是
abcdef.day1301.Point@a123kjl
“型別名稱@記憶體地址”
如果需要,可以在子類中重寫這個方法
equals(Objectobj)
當前物件與引數物件obj比較是否相等
a.equals(b)
Object中預設實現是:
比較物件的記憶體地址
This == obj
提示:
學號和年齡是int基本型別,用 == 比較
姓名和性別是String型別,用equals()比較
基本型別 == 表示值比較
String 型別 == 地址比較
Object類中 == equals 都表示儲存的物件的地址比較 只是equals在很多類中進行了重寫
在string中,先進行地址比較再進行值比較 可理解為值的比較
Java.lang.String
*封裝char[]陣列的物件
*字串的字面值
*第一次使用一個字面值時
在“字串常量池”中新分配記憶體建立字串物件
*再次使用相同字面值時
直接訪問“常量池”中存在的物件,而不會新建
*字串不可變
建立物件
1. byte[] a = {‘h’,’e’,’l’,’l’,’o’};
String s = new String(a);
2. 第一種建立方式的語法簡化
String s = “hello”;
方法
CharAt(intindex)獲得指定位置字元
S= “abc”;
CharC = s.charAt(2);
ToUpperCase()變成大寫
S= s.toUpperCase()
Print(s);
toLowerCase()變成小寫
length()長度
compareTo(Sting,anotherString)
compareTolgnoreCase(Stringstr)忽略大小寫與另一字串按編碼表順序比較大小
當前字串大,返回整數
當前字串小,返回負數
大小相同,返回0
startsWith(Strings) 是否以指定的子串開頭或結尾
s= "http://www.163.com"
booleanb = s.startsWith("http://")
endsWith(Stringsuffix)
equals(ObjectanObject)
equalsIgnoreCase(StringanotherString)
忽略大小寫,比較字串內容是否相同
indexOf(Strings, int fromIndex) 從指定位置向後尋找,獲得指定子串的位置,不存在,返回 -1
lastIndexOf(Strings) 從後向前尋找子串的位置
indexOf(Strings)
s= "abc abc abc";
intindex = s.lastIndexOf("xxxxx");
replace(charoldChar, char newChar)將指定的字元替換為新的字元 s= "abc abc abc";
Strings2 = s.replace('a', '-');
System.out.println(s2);
substring(int a) 從 a 位置直到結束
s= "abcdefg";
Strring s2 = s.substring(3, 5);
System.out.println(s2);
substring(int a, int b) 獲得 [a, b) 位置範圍的子串
trim() 去除兩端空白字元
s= " a bc ";
s= s.trim();
System.out.println(s);
getBytes() unicode 轉為預設編碼格式的位元組陣列
getBytes(字元編碼) 將 unicode 轉為指定編碼格式的位元組陣列
String.valueOf(資料) 將任何資料轉為字串
publicclass Test3 {
publicstaticvoid main(String[] args) {
Strings = "abc abc abc ";
System.out.println(s);
System.out.println("1位置字元:"+s.charAt(1));
System.out.println("2位置字元:"+s.charAt(2));
System.out.println("變大寫:"+s.toUpperCase());
System.out.println("變小寫:"+s.toLowerCase());
System.out.println("長度:"+s.length());
System.out.println("與xyz比大小:"+s.compareTo(" xyz"));
System.out.println("是否以abc開頭:"+s.startsWith(" abc"));
System.out.println("是否以bc結尾:"+s.endsWith("bc "));
System.out.println("第一個bc的位置:"+s.indexOf("bc"));
System.out.println("3位置向後找bc:"+s.indexOf("bc",3));
System.out.println("從後向前找bc:"+s.lastIndexOf("bc"));
System.out.println("找不存在的子串:"+s.indexOf("xxxx"));
System.out.println("a替換成-:"+s.replace('a','-'));
System.out.println("擷取6到末尾:"+s.substring(6));
System.out.println("擷取[6,10]:"+s.substring(6,10));
System.out.println("去除兩端空格:"+s.trim());
}
}
執行結果:
abc abc abc
1位置字元:b
2位置字元:c
變大寫:ABC ABC ABC
變小寫:abc abc abc
長度:12
與xyz比大小:65
是否以abc開頭:false
是否以bc結尾:true
第一個bc的位置:1
3位置向後找bc:5
從後向前找bc:9
找不存在的子串:-1
a替換成-:-bc-bc -bc
擷取6到末尾:c abc
擷取[6,10]:c ab
去除兩端空格:abc abc abc
Java.lang.StringBuilder Java.lang.StringBuffer
*可變的字元序列
*封裝char[]陣列物件
*用來代替字串做高效率的字串連線
sb.append(“abc”);
建立物件
1.無引數StringBuilder sb = StringBuilder();
2.帶引數StringBuilder sb = StringBuilder(“abc”);
正規表示式 Regex
*正確的字串格式規則 (百度“正規表示式大全”)
s.matches()是否匹配
正規表示式 匹配的字串
K k
Abc abc
[abc] a,b,c
[abc][123] a1,a2,a3,b1,b2,b3…
[^a-zA-Z] 排除字母
\d 數字
\D 排除數字
\w 單詞字元[a-zA-Z_0-9]
\W 排除單詞字元
\s 空白字元
\S 排除空白字元
. 任意字元
[\u4e00-\u9fa5] 中文範圍
[abc]? 0或1個 a,b,,c,
[abc]?[123] a1,b2,3,2,1
[abc]* 0到多個
[abc]+ 1到多個a,b,aacccbb…
[abc]{3} aaa,abc,bbb,acc
[abc]{3,5} abc,abcaa,abcc
[abc]{3,} 3到多個
| 或
replaceAll(正規表示式, 子串)
將找到的匹配子串,替換為新的子串
split(正規表示式)
用匹配的子串,拆分字串
abc,def,ghi,jkl
Java.util.regex.Pattern Java.util.regex.Matcher
*Pattern封裝一個正規表示式
*Matcher封裝正規表示式和要匹配的字串
建立物件
Pattern p = Pattern.compile(正規表示式);
Matcherm = p.matcher(要匹配的字串);
Matcher方法
Find
向後查詢下一段匹配的子串
找到返回true
找不到返回false
Find(intfrom)
從from位置向後查詢
Group()
取出剛剛找到的子串
Start()
End()
取出剛剛找到的子串的起始位置和結束位置
End位置不包含(左閉右開)
基本型別包裝類
byte Byte
short Short
int Interger
long Long
float Float
double Double
char Character
boolean Boolean
java.lang.Number
*數字包裝類的抽象類
*子類:
Byte
Short
Integer
Long
Float
Double
BigDecimal
BigInteger
方法
從包裝物件中取出被封裝的基本型別值
bytevlaue
shortValue
intVlaue
longValue
floatValue
longValue
floatValue
doubleValue
java.lang.Integer
建立物件
1.IntergerI = new integer(10);
2.IntegerI = Integer.valueOf(10);
在Integer類中存在-128到127
共256個Integer快取物件
指定範圍內的值,直接訪問存在的快取物件
指定範圍外的值,新建物件
方法
*從父類Number繼承的6個取值方法
*字串解析成int
Integer.parseInt(“255”);
Integer.parseInt(“11111111”,2);指定2進位制
Integer.parseInt(“377”,8); 指定8進位制
Integer.parseInt(“ff”,16); 指定16進位制
*進位制轉換
Integer.toBinaryString(255); 1111111 二進位制
Integer.toOctalString(255); 377 八進位制
Integer.toHexString(255); ff 十六進位制
Java.lang.Double
建立物件
1. Double d = new Double(3.14);
2. Double d = Double.valueOf(3.14);
與new相同,都是新建物件
方法
*)從父類繼承的6個取值方法
*)字串解析成double
Double.parseDouble(“3.14”);
Inter.paeseInt()
Long.parseLong()
Short.parseShort()
Boolean.parseBoolean()
*)判斷double的兩個特殊值 返回true flase
Infinity
Double.isInfinite(doubled); 判斷是否無窮大
NaN
Double.isNaN(Doubled); 判斷是否是NaN
*自動裝箱、自動拆箱
*)自動裝箱
Integeri = 34;
編譯成:Integer i= Integer.valueOf(34);
封裝34物件 把記憶體地址賦給i
*)自動拆箱
Inta = i;
編譯成:int a =i.intValue();
i= i + 3;
編譯成:i =Integer.valueOf(i.intValue()+3);
*自動拆箱要當心null值
Java.math.BigDecimal Java.math.BigInteger
*BigDecimal做精確的浮點數雲端
*BigInteger 做超大整數運算
建立物件
BigDecimal bd = BigDecimal.valueOf(2);
方法
Add(BigDecimalbd)
subtract(BigDecimalbd)
multiply(BigDecimalbd)
divide(BigDecimalbd) 不支援無限迴圈小數
divide(BigDecimalbg,保留位數,舍入方式)
eg:bd3 =bd1.divide(bd2,15,BigDecimal.ROUND_HALF_UP);
舍入運算:
setScal(保留位數,舍入方式)
取值:
*)從父類Number繼承的6個取值方法
*)toString()
Java.text.DecimalFormat
*數字格式工具
*數字-->數字格式的字串
*數字格式的字串-->數字
建立物件:
DecimalFormatf = new DecimalFormat(格式);
格式:
“$###,###.000”
“\u00A4###,###.000”當地貨幣
參考DecimalFormat文件
方法:
Format(數字)
數字格式化成字串
Parse(字串)
字串解析成數字
Setpattern(格式)
修改格式
Java.lang.Math
Math.PI
Math.E
Math.random()
Math.sqrt()
Math.pow(a,b)
Math.min()
Math.max()
Math.sin()
Math.cos()
Math.tan()
Java.util.Date
*封裝一個毫秒值
毫秒值:1970-1-10點開始的毫秒值
*表示一個時間點
建立物件
1. Date d = new Date();
封裝系統當前時間毫秒值
2. Date d = newDate(90000000000000L);
封裝指定的毫秒值
方法:
getTime()
setTime(Longt)
存取內部封裝的毫秒值
compareTo(Dated)
當前Date物件與引數Date物件比較大小
如果當前物件大,返回整數
當前物件小,返回負數
相同,0
Java.text.SimpleDateFormat
*日期格式工具
*date物件à日期格式字串
*日期格式字串àdate物件
建立物件
SimpleDateFormatf = new SimpleSateFormat(格式)
格式:
“yyyy-MM-ddHH:mm:ss”
“dd/MM/yyyy”
“yy-M-dH:m”
“yyyy年MM月dd日 HH:mm:ss”
方法
Format(Date物件)
Date物件格式化成字串
Parse(字串)
字串解析成date物件
SetPattern(格式)
修改格式
Java.util.Calendar
*日曆的抽象父類
*內部封裝一個毫秒值
*Calendar提供一組時間運算方法
建立物件
1.Calendarc = new GregorianCalendar();
2.Calendarc = Calendar.getInstance();
根據系統地區設定,可能會建立不同地區的當地曆法
方法:
Get(欄位)
獲取指定欄位的值,例如:
C.get(Calendar.YEAR)
c.get(Calendar.HOUR_OF_DAY)
set(欄位)
修改指定欄位值
getTime()
獲得表示相同時間的Date型別例項
SetTime()
將時間設定為指定Date例項所表示的時間
Java.util.GregorianCalendar
*日曆子類
*羅馬歷,即“公曆”、“陽曆”
集合
*資料結構工具
*用來存放一組資料
java.util 包
---------------------------
Collection 介面
|- List 介面
|- ArrayList
|- LinkedList
|- Set 介面
|- HashSet
|- TreeSet
Map 介面
|- HashMap
|- TreeMap
Iterator 介面
Collections 工具類
java.util.LinkedList
* 雙向連結串列
* 兩端效率高
建立物件
---------------------------------
LinkedList list = new LinkedList();
方法
---------------------------------
add(資料) 新增資料
add(int index, 資料) 在指定位置插入資料
addFirst(資料)
addLast(資料)
getFirst()
getLast()
removeFirst()
removeLast()
FIFO 操作 First InFirst Out,佇列操作 Queue
offer(資料) - addLast
peek() - getFirst
poll() -removeFist
LIFO 操作 Last InFisrt Out,棧操作 Stack
push() - addFirst
pop() -removeFirst
get(int index) - 獲得指定位置的值
contains(資料) - 判斷列表中是否存在與指定資料相等(equals)的值
set(int index, 資料) - 將指定位置設定為新的值
size() -獲得列表中資料的數量
remove(int index) - 移除指定位置的元素,並返回被移除的資料
remove(資料) - 移除與指定資料相等的資料
clear() -清空
iterator() - 獲得新建的迭代器例項
java.util.ArrayList
============================================
* 內部封裝一個陣列,資料儲存在陣列中
* 訪問任意位置,效率高
* 新增、刪除資料,效率可能會降低
* ArrayList vs LinkedList
*)如果只在兩端運算元據,選擇LinkedList
建立物件
------------------------------------
1.ArrayList list = new ArrayList();
內部陣列初始容量 10
2.ArrayList list = new ArrayList(1000);
內部陣列初始容量 1000
方法
------------------------------------
與 LinkedList 相同,但是沒有兩端運算元據的方法
java.util.HashMap
* 雜湊表,雜湊表
* 存放“鍵值對”資料
* 用來快速查詢資料
* 鍵:
*)不重複
*)無序
*)必須重寫 hashCode() 和 equals()
*)equals()相等,hashCode()必須相同
*)equals()不相等,hashCode()儘量不相同
建立物件
------------------------------------
HashMap map = new HashMap();
方法
------------------------------------
put(k, v) 放入鍵值對資料
get(k) 用鍵獲得對應的值
remove(k) 移除指定的鍵和它的值
containsKey(key) 是否包含指定的鍵
containsValue(value)是否包含指定的值
size() 有多少對資料
clear() 清空
keySet() 獲得一個 Set 型別集合,包含所有的鍵
entrySet() 獲得一個 Set 型別結合,包含所有Entry
values() 獲得集合,包含所有的值
java.util.TreeMap
* 紅黑二叉樹
* 用來快速查詢資料
* 鍵:
*)不重複
*)有序,從小到大
*)比較大小的兩種方式
*)鍵實現 Comparable 介面
*)在 TreeMap 上外接比較器Comparator(優先)
建立物件
---------------------------------------
1. TreeMap map = new TreeMap();
2. TreeMap map = new TreeMap(比較器);
方法
---------------------------------------
* 與 HashMap 相同
|- Set 介面
|- HashSet
|- TreeSet
==========================================
* HashSet 內部封裝一個 HashMap,
資料作為鍵,存放在 HashMap 中
*)不重複、無序
* TreeSet 內部封裝一個 TreeMap,
資料作為鍵,存放在 TreeMap 中
*)不重複、有序,從小到大
建立物件
----------------------------------
HashSet set = new HashSet();
TreeSet set = new TreeSet();
TreeSet set = new TreeSet(比較器);
方法
----------------------------------
add(資料)
remove(資料)
contains(資料)
clear()
size()
iterator()
Java.util.TreeMap
*紅黑二叉樹
*用來快速查詢資料
*鍵:
*不重複
*有序,從小到大
*比較大小的兩種方式
*讓鍵實現Comparable介面
*在TreeMap上外接比較器Comparator
建立物件
1. TreeMap map = new TreeMap
2. TreeMap map = new TreeMap(比較器);
方法
*與HashMap相同
Set介面 -Hashset -Treeset
*hashSet內部封裝一個HashMap,資料作為鍵,存放在HashMap中
*資料不重複,無序
*TreeSet內部封裝一個TreeMap,資料作為鍵存放在TreeMap中
*不重複、有順序從小到大
建立物件:
HashSet set = new HashSet();
TreeSet set = new TreeSet();
TreeSet set = new TreeSet(比較器);
for-each 迴圈
* 對陣列遍歷或集合迭代器遍歷的語法簡化
* 陣列
for(int i=0;i<a.length;i++) {
String s = a[i];
//處理 s
}
----
for(String s :a) {
//處理 s
}
* 集合
for(Interator<String> it = list.iterator(); it.hasNext();) {
String s = it.next();
//處理 s
}
----
for(String s:list) {
//處理 s
}
可變長引數
* 陣列引數傳遞的語法簡化
void f(int[] a) {
}
f(new int[]{9, 5, 2, 7})
f(new int[]{9, 5, 2, 7, 1, 2, 3, 4, 5})
f(new int[]{9, 5})
f(new int[]{})
--------------------------
void f(int... a) {
//a是 int[] 陣列
}
f(9, 5, 2, 7)
f(9, 5, 2, 7, 1, 2, 3, 4, 5)
f(9, 5)
f()
列舉 Enumeration
* 一組固定選項
* 用來代替整數數字程式碼選項,
提供型別安全的選項
int TYPE_COLD=4343;
int TYPE_HEAT=5345;
int TYPE_NUCLEAR=26345;
...
void f(int type) {
}
...
f(Weapon.TYPE_COLD)
f(Weapon.TYPE_HEAT)
f(Weapon.TYPE_NUCLEAR)
f(234234)
------------------------
public enum WeaponType {
COLD, HEAT, NUCLEAR
}
* 列舉本質就是一個類
* 其中的列舉選項,是WeaponType 物件
public static final WeaponType COLD=new WeaponType();
*void f(WeaponType type) {
}
...
f(WeaponType.COLD)
f(WeaponType.HEAT)
f(WeaponType.NUCLEAR)
泛型
* 是一種型別引數
class A<Type> {
Type t;
void f(Type t) {
}
Type f() {
}
}
異常
*封裝錯誤資訊的物件
錯誤資訊:
*)型別名稱
*)提示訊息
*)行號
* 繼承結構
Throwable
|- Error 系統級錯誤
|- Exception 可修復的錯誤
|- 其他Exception
|- RuntimeException
|- NullPointerException
|-ArrayIndexOutOfBoundsException
|- ArithmeticException
|- NumberFormatException
|- ClassCastException
|- InputMismatchException
...
* 捕獲異常
try {
...
} catch(AException e) {
} catch(BException e) {
} catch(父型別Exception e) {
} finally {
}
*throws
*)設定異常丟擲管道
void f() throws A,B,C,D {
}
*)RuntimeException 存在預設丟擲管道
*)其他Exception,必須二選一:
*)插管道
*)捕獲
io
*Input / Output
輸入 / 輸出
*java.io 包
File
RandomAccessFile
InputStream / OutputStream
FileInputStream / FileOutputStream
BufferedInputStream / BufferedOutputStream
DataInputStream / DataOutputStream
PrintStream
ByteArrayInputStream / ByteArrayOutputStream
ObjectInputStream / ObjectOutputStream
Reader / Writer
InputStreamReader / OutputStreamWriter
FileReader / FileWriter
BufferedReader / BufferedWriter
PrintWriter
相關文章
- java基礎整理1Java
- 【java基礎資料整理】Java
- Java基礎語法吐血整理Java
- 79、 android基礎教程整理 (轉載)Android
- 整理Java基礎知識--Calendar 類Java
- Java基礎知識整理之this用法Java
- jQuery筆記整理教程(常用的API和基礎)jQuery筆記API
- Java基礎知識整理之註解Java
- Java基礎異常整理(持續更新)Java
- Java基礎複習,整理知識點Java
- Java面試之Java基礎問題答案口述整理Java面試
- Java基礎之常見API總結JavaAPI
- Java基礎11---eclipse和APIJavaEclipseAPI
- Java基礎面試題整理-50題(附答案)Java面試題
- 整理Java基礎知識--Number&Math類Java
- 思維導圖整理Java併發基礎Java
- Java基礎知識整理之程式碼塊Java
- Git基礎整理Git
- Angular 基礎整理Angular
- Android面試之Java 基礎篇Android面試Java
- Java基礎知識整理之static修飾方法Java
- 快取基礎整理快取
- Java8 Stream常用API整理JavaAPI
- Android基礎之Java集合框架CollectionAndroidJava框架
- Java基礎知識整理之static修飾屬性Java
- Java網路程式設計基礎學習與整理Java程式設計
- Java基礎面試題型整理,附帶答案詳解Java面試題
- Babel基礎知識整理Babel
- JS基礎知識整理JS
- RAID基礎概念整理AI
- 零基礎快速學習Java技術的方法整理Java
- Android面試之Java基礎筆試題Android面試Java筆試
- android阿里面試java基礎錦集Android阿里面試Java
- Python基礎知識整理Python
- Web前端基礎知識整理Web前端
- Servlet基礎知識點整理Servlet
- C++基礎知識整理C++
- Java基礎-語法基礎Java