1. 程式人生 > >201711671235學習《java程式設計》第八週學習總結

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版)》