201711671235學習《java程式設計》第八週學習總結
教材學習內容總結
1.1String類
作用:處理字元序列,String類定義為final類,即不能有子類。
常量物件 | String類物件 | 引用String類物件 | |
擁有引用和實體 |
|||
“你好”,“12.97” | String s=new String(” We are student“) 每次使用new都會開闢新空間 |
String物件=String常量物件的引用 | |
常量池 | 動態池 | 動態池 | |
執行期間不可以改變 | System.out.prontln(s)輸出物件的實體 | String s1=“你好”; String s2=“你好” |
|
構造方法 | s1,s2具有相同的引用,所以s1=s2 | ||
String(char a[]) 例:char [a]={‘J’,‘a’} String s=new String(a)<=> String s=new String("ja") |
提取一部分String(char a[],int startIndex,int count) startIndex:起始位置,count:擷取字元的個數 |
1.2字串的並置
String物件可以用“+”進行並置運算
例:String you=“你”;String ni=“好”;String testOne=you+hi;
動態池
you
引用:12A | 實體:你 |
hi
引用:12B | 實體:好 |
newtestOne
引用:12AB | 實體:你好 |
testone
引用:12AB |
注:只要參與並置運算的有一個是變數,java就會在動態區存放所得到的新的String物件的實體和引用;
如果幾個常量並置運算,那麼得到的仍然是常量,如果常量池沒有這個常量就放入常量池。
1.3String類的常用方法
public int length() | 獲取一個String物件的字元序列的長度 | 物件.length(); |
public boolean equals(String s) (public boolean equalsIgnore-Case(String s)) |
比較當前String物件的字元序列是否與引數s指定的String物件的字元序列相同 (比較時忽略大小寫) |
String tom=new String(“天道酬勤”); tom.equal(“‘天道酬勤’”); |
public boolean startsWith(String s)、public boolean endsWith(String s) | 判斷當前String物件的字首/字尾是否是引數指定的String物件s的字元序列 | 物件.startsWith(“字元”),物件.endsWith(“字元”) |
public int compareTo(String s) (public int compareToIgnoreCase(String s)) |
按字典序與引數指定的String物件s的字元序列比較大小 (忽略大小寫) |
String物件的字元序列與s相同,返回0 大於s的字元序列,返回正值 小於s的字元序列,返回負值 |
public boolean contains(String s) |
判斷當前String物件的字元序列是否包含引數s的字元序列 | 結果返回ture or false |
public int indexOf(String s)和public int lastIndexOf(String s) |
從當前String物件的字元序列的0索引位置開始檢索首次//最後一次出現s的字元序列的位置,並返回該位置 沒有檢索到返回-1 |
String tom=“I am a good student” tom.indexOf(“good”,2)//值是7 |
indexOf(String str,int startpoint) | 過載方法,引數startpoint:指定索引的開始位置 | |
public String substring(int startpoint) (public String substring(int start,int end)) |
獲取一個新的String物件:複製由startpoint位置至最後位置上的字元 (獲取一個新的String物件:複製由startpoint位置至end-1位置上的字元) |
|
public String trim() | 獲取一個新物件:去掉前後空格後的字元序列 |
1.4字串與基本資料的相互轉換
public static int parseInt/Short(String s)throws NumberFormatException:可將由“數字”字元組成的字元序列轉換為int/short型資料
public static String valueOf(int/short n):可將數值型的字元轉化為String物件
1.5物件的字串表示
public String toString()方法:獲取物件的字串表示,返回形式:建立物件的類的名字@物件的引用的字串表示
Date類重寫toString方法,返回形式:時間的字元序列
1.6正則表示式及字串的替換與分解
將物件的字元序列存放到一個字元陣列中:char []p=物件.toCharArray()
正則表示式:String物件的字元序列,該字元序列中含有特殊意義的字元->元字元
public boolean matchs(String regex) | 判斷當前String物件的字元序列是否和引數regex指定的正則表示式匹配 | |
字串的替換 | public String replaceAll(String regex,String replacement) | 將所有與引數regex匹配的子字元序列,用引數replacement的字元序列替代 |
字元序列分解 | public String[] split(String regex) | regex作為分隔標記分解出當前String物件的字元序列中的單詞,並將分解的單詞放到String陣列中 |
2.StringTokenizer類
StringTokenizer物件分解String物件的字元序列 | 不使用正則表示式作為分隔標記 |
構造方法 | |
String Tockenizer(String s) | s為分析器,使用空格符、換行符、回車符、Tab符等作為預設分隔標記 |
String Tockenizer(String s,String delim) |
s為分析器,引數delim的字元序列中的字元的任意排列被作為分隔標記 |
分析器.nextToken() | 獲取String物件的字元序列中的語言符號(單詞) |
while方法逐個獲取語言符號->控制迴圈->hasMoreTokenizer() | |
分析器.countTokenizer() | 得到分析器中計算變數的值 |
3.Scanner類
學習目標:使用Scanner物件從字元序列中解析出程式所需要的資料
String NBA=“I love this game”;Scanner scanner=new Scanner(NBA); | |
scanner.useDelimiter(正則表示式); | 正則表示式為分隔符,不設定即預設為空白字元(空格、製表符、回車符) |
scanner.next() | 返回被解析的字元序列的單詞 |
scanner.hasnext | 沒有單詞可返回->返回false |
scanner.nextInt/Double() | 將數字型單詞轉化為int或double資料返回 |
StringTokenizer | Scanner |
分解出來的物件都存放到StringTokenizer物件的實體中 | 不把單詞存放到Scanner物件的實體中 |
快速獲取單詞 | 獲取速度較慢 |
佔用較多的空間 | 節省記憶體空間 |
4.StringBuffer類
String類 | StringBuffer類 |
String物件的字元序列不能被修改、刪除 | 實體記憶體空間可以自動改變大小 |
實體不可以發生任何變化 |
構造方法 | |
StringBuffer() | 初始容量:容納16個字元,後續自動增加 |
StringBuffer(int size) | 初始容量:引數size指定字元個數,實體容量自動地增加 |
StringBuffer(String s) |
初始容量:引數s指定字元序列長度+16 |
StringBuffer append(String s) | 將String物件s的字元序列追加到當前StringBuffer物件的字元序列中 |
public char charAt(int n)/public void setCharAt(int n,char ch) | 獲取StringBuffer物件的字元序列位置n上的字元/將當前StringBuffer物件的字元序列位置n處的字元用引數ch指定的字元替換(n的值必須為非負) |
StringBuffer insert(int index,String str) | 將引數str指定的字元序列插入到引數index指定的位置,並返回當前物件的引用 |
public StringBuffer reverse() |
將物件實體進行翻轉,並返回當前物件的引用 |
StringBuffer delete(int startIndex,int endIndex) | 子字元序列從下標startIndex到endIndex-1位置處的字元被刪除,並返回當前物件的引用 |
StringBuffer replace(int startIndex,int endIndex,String str) | 子字元序列從下標startIndex到endIndex-1位置處的字元被str替換,並返回當前物件的引用 |
5.Date類與Calendar類
處理和日期、時間相關的資料
5.1Date類
無參構造方法 | 帶參構造方法 | |
Date nowTime=new Date() | 獲取本機/系統當前日期和時間 | Date date1=new Date(1000) |
public long currentTimeMillis() | ||
System.out.println(nowTime):輸出實體的時間 | 引數正數表示公元后的時間 |
5.2Calendar類
使用Calendar的static方法getInstance() | 初始化日曆物件 |
Calendar物件呼叫方法 | 將日曆翻到任何一個時間 |
public final void set(int year,int month,int date,int hour,int minute,int second) | |
public int get(int field) | 獲取有關年、月份、小時、星期等資訊,field由Calendar指定 |
public long getTimeMillis() | 返回當前Calendar物件中時間的毫秒計時(當前calendar物件中的時間與1970年01月01日08點的差值) |
6.1日期的格式化
format(格式化模式、日期列表) | |||
格式化模式 | 格式符個數與日期個數相同 | 由時間格式符和普通字元組成 | 假設當前時間為2016.10.1日 Date nowTime=new Date() String s=String.format(“%tYnian%tm月%td日”,nowTime,nowTime,nowTime) 輸出:2016年10月01日 |
日期列表 | 用逗號分隔Calendar物件或Date物件
|
||
格式化同一日期 | 希望用幾個格式符號格式“日期列表”中的同一個日期 | String str1=String.format(“%t年%<t月%<td日”,nowTime) 三個格式符號格式同一個日期 |
6.2不同區域的星期格式
format過載方法:format(Local local,格式化模式,日期列表),其中引數local是一個Local類的例項,用於表示地域
7.1Math類
計算一個數的平方根、絕對值、或獲取一個隨機數等。
public static long abs(double a) |
返回a的絕對值 |
public static double max/min(double a,double b) | 返回a、b的最大/小值 |
public static double random() | 產生一個0-1之間的隨機數(不包括0和1) |
public static double pow(double a,double b) | 返回a的b次冪 |
public static double sqrt(double a) | 返回a的平方根 |
public static double log(double a) | 返回a的對數 |
public static double sin(double a) | 返回a的正弦值 |
public static double asin(double a) | 返回a的反正弦值 |
public static double ceil/floor(double a) | 返回大/小於a的最小整數,並將該整數轉化為double型資料 |
public static long round(double a) | 返回(long)Math.floor(a+0.5),即a“四捨五入”的值 |
7.2Random類
構造方法 | |
public Random() | 使用當前機器時間為種子建立一個Random物件 |
public Random(long seed) | 使用引數seed指定的種子建立一個Random物件 |
8數字格式化
8.1format方法
格式化模式 | 格式符個數與“值列表”列出的值的個數相同 | 由時間格式符和普通字元組成 |
值列表 |
|
|
格式化順序 | 預設從左到右 在格式符前面新增索引符號index$,例如2$表示值列表的第二個 |
8.2.1格式化整數/浮點數
%d | 將值格式化為十進位制整數 |
%o | 將值格式化為八進位制整數 |
%x/%X | 將值格式化為小寫/大寫的十六進位制整數 |
%f | 將值格式化為十進位制浮點數,小數保留6位 |
%e(%E) | 將值格式化為科學計數法的十進位制的浮點數 |
8.2.2修飾符
%+d/f | 格式化整數/浮點數時,強制新增上“+”號,表示正數 |
%,d/f | 格式化整數/浮點數時,按“千”分組 |
8.2.3資料的寬度
%md/f |
在數字的左面增加空格 |
%-md/f | 在數字的右面增加空格 |
%0md/f | 在數字的左面增加0 |
%.nf | 可以限制小數的位數,n為保留的小數位數 |
9Class類和Console類
9.1Class類
public static Class forName(String className)throws ClassNotFoundException
public Object newInstance()throw InstantiationException,IllegalAccessException:例項化一個className物件,className類必須有無引數的構造方法
9.2Console類:從鍵盤輸入一行文字但不在命令列顯示
Console cons=System.console()
char []passwd=cons.readPassword():讀取鍵盤輸入文字並將其以一個char陣列返回
10Pattern類與Matcher類
模式匹配就是檢索和指定模式匹配的字元序列
10.1建立Pattern物件
Pattern pattern=Pattern.compile(regex):引數regex作引數,得到一個稱為模式的Pattern類的例項pattern
10.2得到Matcher物件
Matcher matcher=pattern.matcher(input)
public boolean find() | 尋找input和regex匹配的下一子序列 |
public boolean matcher() | 判斷input是否完全和regex匹配 |
public boolean lookingAt() | 判斷從input的開始位置是否有和regex匹配的子序列 |
public boolean find(int start) | 判斷從引數start指定位置開始是否有和regex匹配的子序列 |
public String replaceAll(String replacement) | 返回一個String物件,該String物件的字元序列是通過把input的字元序列中與regex匹配的字元序列全部替換為引數replacement指定的字元序列 |
public String replaceFirst(String replacement) | 返回一個String物件,該String物件的字元序列是通過把input的字元序列中第一個與regex匹配的字元序列全部替換為引數replacement指定的字元序列 |
教材學習中的問題和解決過程
字串進行並置時實體和應用的空間變化:通過畫圖分析
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
目標 | 5000行 | 20篇 | 400小時 | 會用java語言獨立設計程式 |
第一週 | 13/13 | 1/1 | 5/5 | 學會使用jdk以及對java源程式語句的基本注意事項有所瞭解 |
第二週 | 140/143 | 1/2 | 10/15 | 學會java基本資料型別與陣列和c語言/c++在表達和用法上的相同/不同之處 |
第三週 | 276/419 | 1/3 | 20/35 | java中運算子,表示式和語句的表現形式,類的宣告,定義方法 |
第四周 | 600/1019 | 1/4 | 30/45 | 類和物件 |
第五週 | 150/1169 |
1/5 | 10/55 | 繼承的作用,子類和父類的繼承性,子類繼承父類後方法的訪問許可權以及各種操作 |
第六週 | 100/1269 | 1/6 | 8/63 | 介面定義、使用方法和作用 |
第七週 | 100/1369 | 1/7 | 9/72 | 內部類(獨有)包含匿名類和異常類(檢測)的使用方法和作用 |
第八週 | 150/1869 | 1/8 | 10/82 | java常用實用類和方法 |
參考文獻
《java2實用教程(第5版)》