Java 學習筆記(2015.7.20~24)
Java
day11
父類中使用public定義的方法,子類的訪問權限必須是public
private定義的成員只能自己用
覆寫方法時可以擴大權限,比如default>public ,不能縮小權限,會報錯
private方法不能被子類繼承,但是可以被父類的方法調用
聲明成員變量,一般名字前加個m
抽象類中是可以定義構造方法的
在接口中的抽象方法必須定義爲public權限,不寫也是public
向上轉型,父類指向子類
接口跟抽象類的異同
熟悉匿名內部類
接口由全局常量和抽象方法組成,所以
String AUTHOR = "Jensen";等價於public static final String AUTHOR = "Jensen";
void print();等價於public abstract void print();
String getInfo();等價於public abstract String getInfo();
Java允許一個接口繼承多個接口:
interface 子接口 extends 父接口A,父接口B,...{ }對象 instanceof 類 返回boolean類型
抽象類 製作模板
接口 制定標準
設計模式 工廠模式
在接口和子類之間加入一個過渡端,通過此過渡端取得接口的實例化對象,一般都會稱這個過渡端爲工廠類。"orange".equals(className) 爲什麼在進行字符串判斷時要把字符串常量寫在前面?
答:這樣做可以避免空指向異常,比如傳入的值爲null時
數組
數組可以看成是多個相同類型數據組合
數組變量屬引用類型
一維數組
數組的聲明
int[] a; // 建議使用這種
byte[] c;
int b[];
注意:
Java語言中聲明數組時不能指定其長度
初始化
靜態初始化
int b[] = new int[]{1,2,3,4,5};// 靜態初始化
int[] c = {1,2,34,56,7};// 靜態初始化
動態初始化
根據下標從數組中取值,下標:可以是整型常量或整型表達式
下標從0開始
在控制檯打印數組中所有元素
每個數組都有一個屬性length指明它的長度
排序:
冒泡排序 選擇排序 插入排序 希爾排序
排序:
替換
if(a[i]>=a[j]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
二維數組
二維數組可以看成以數組爲元素的數組
聲明
int[][] a
int b[][]
初始化
int b[][] =
{{1,2},{2,2,3,45,6},{2,3,6,7}};
int[][] c =
new int[][]{{1,2},{2,2,3,45,6},{2,3,6,7}};
二位數組初始化
先初始化高維
int[][] a = {{1,23,4},{1,3,4},{2222}};
day12
拆箱與裝箱
int x = 30;Integer i = new Integer(x);//裝箱int y = i.intValue();//拆箱
包裝類的應用
包裝類在實際中用的最多的是將字符串變爲基本數據類型的操作,例如將一個全由數字組成的字符串變爲一個int或float類型的數據。
String str1 = "30";String str2 = "30.3";int x = Integer.parseInt(str1);float f = Float.parseFloat(str2);
匿名內部類
接口本身是不能直接進行實例化的,所以在接口實例化後要有一個大括號,在其中編寫具體的實現方法。
匿名字符串放在 data segment 裏面
字符串,length() 方法
對象,length 屬性
day13
1、常用類String
2、正則表達式
格式不用記
句點.表示單個字符
方括號[]表示可能出現字符集裏的單個字符
括號()可表示多個字符
大括號{}表示次數
轉義字符“\”
一般正則表達式是由通配符和固定字符組成
栗子:
字母 _ 數字 大於6小於10位
"\w{6,10}"郵箱:[email protected]
"\w+@\w+\.\w+"手機:以13 15 18 17 開頭 11位
"[1][3578]\d{9}"
只要記住:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
3、常用類 StringBuffer 代表可變的字符序列
String
StringBuffer
reverse()
注意:StringBuffer默認容量16;
如果傳入的數據量大於當前容量
StringBuffer容量將發生變化 2*之前容量 + 2
day14
1、StringBuffer與StringBuilder的區別:
StringBuffer :同步 線程安全 效率較低
StringBuilder :異步 不安全 單線程效率高
2、基本數據類型包裝類
基本數據類型 包裝類 boolean Boolean byte Byte char Character short Short int Integer long Long float Float double Double Integer
public static int parseInt(String s)
public static Integer valueOf(String s)
java5.0之後有自動拆裝箱功能,如下
Integer i = new Integer(100);int j = i + 100;// 自動拆箱int k = 100;Integer m = k; // 自動裝箱
Character
isUpperCase(char ch) 判斷字符是否是大寫字母
isLowerCase(char ch) 判斷字符是否是小寫字母
isLetter(char ch) 判斷字符是否是字母
isDigit(char ch) 判斷字符是否是數字
3、Date、Calendar、DateFormat等與時間相關的類
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Test { public static void main(String[] args) { // 創建日期格式對象 SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); try { Date date = format.parse("2011年11月11日 11:11:11"); System.out.println(date.getTime()); } catch (ParseException e) { e.printStackTrace(); } // 創建Calendar對象 Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); System.out.println("year = " + year); int month = calendar.get(Calendar.MONTH); System.out.println("month = " + (month + 1)); int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("day = " + day); } }
輸出結果:
1320981071000 //從1970到該時間點的毫秒數
year = 2015 //打印今天的日期
month = 7
day = 25