Java 學習筆記(2015.7.20~24)

Java 學習筆記(2015.7.20~24)

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、基本數據類型包裝類

  • 基本數據類型包裝類
    booleanBoolean
    byteByte
    charCharacter
    shortShort
    intInteger
    longLong
    floatFloat
    doubleDouble
  • 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章