六.課後作業
例:
string s1="helloworld";
string s2="helloworld";
string s3=new string("helloworld");
system.out.println(s2==s1); //true
system.out.println(s3==s1); //false
1.==比較的是位址值
2.new物件建立新的位址,所以不相等;並且new物件也建立了乙個字面量
3.如果要比較內容,string可以直接使用equals (注意:!!!string重寫了父類的equals方法)
例:
string s4=s1+s2;
string s5=s1+"helloworld";
string s6="a"+"b"+"c";
system.out.println(s4==s5); //false
system.out.println(s4+","+s5+","+s6);
請問s6建立了幾個物件? == 1個==
1.求字串的位元組數,不管中文還是英文,都按照unicode,位元組數=字元個數*2
2.求字串的長度,一般按照中文2個,英文1個(與編碼有關) (常見的編碼:iso-8859-1 utf-8 gbk/gb2312)
1.stringbuilder執行緒不安全的,stringbuffer執行緒安全
2.兩者的api基本一樣,除了少數操作變長字串的時候有無synchronized關鍵字
3.單執行緒建議使用stringbuilder,多執行緒如果要使用建議使用strungbuffer或者自己做安全處理
正規表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種過濾邏輯。
靈活性,邏輯性和功能性非常強.
可以迅速地用極簡單的方式達到字串的複雜控制.
對於剛接觸的人來說,比較晦澀難懂.
一、校驗數字的表示式
數字:^ [0-9]*$
n位的數字:^\d$
至少n位的數字:^\d$
m-n位的數字:^\d$
零和非零開頭的數字:^(0|[1-9][0-9]*)$
非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9])?$
帶1-2位小數的正數或負數:^(-)?\d+(.\d)?$
正數、負數、和小數:^(-|+)?\d+(.\d+)?$
有兩位小數的正實數:^ [0-9]+(.[0-9])?$
有1~3位小數的正實數:^ [0-9]+(.[0-9])?$
非零的正整數:^ [1-9]\d*$ 或 ^([1-9][0-9])$ 或 ^+?[1-9][0-9]$
非零的負整數:^-[1-9]0-9"$ 或 ^-[1-9]\d$
非負整數:^\d+$ 或 ^ [1-9]\d*|0$
非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
非負浮點數:^\d+(.\d+)?$ 或 ^ [1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$
非正浮點數:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$
正浮點數:^ [1-9]\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
負浮點數:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$
浮點數:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$
二、校驗字元的表示式
20. 漢字:^ [\u4e00-\u9fa5]$
21. 英文和數字:^ [a-za-z0-9]+$ 或 ^ [a-za-z0-9]$
22. 長度為3-20的所有字元:^.$
23. 由26個英文本母組成的字串:^ [a-za-z]+$
24. 由26個大寫英文本母組成的字串:^ [a-z]+$
25. 由26個小寫英文本母組成的字串:^ [a-z]+$
26. 由數字和26個英文本母組成的字串:^ [a-za-z0-9]+$
27. 由數字、26個英文本母或者下劃線組成的字串:^\w+$ 或 ^\w$
28. 中文、英文、數字包括下劃線:^ [\u4e00-\u9fa5a-za-z0-9_]+$
29. 中文、英文、數字但不包括下劃線等符號:^ [\u4e00-\u9fa5a-za-z0-9]+$ 或 ^ [\u4e00-\u9fa5a-za-z0-9]$
30. 可以輸入含有^%&』,;=?katex parse error: can't use function '\"' in math mode at position 1: \̲"̲等字元:[^%&',;=?\x22]+
31. 禁止輸入含有~的字元:[ ^ ~\x22]+
scanner sc=new scanner(system.in);
system.out.print("請輸入字串:");
string s=sc.nextline();
stringbuffer s1=new stringbuffer(s);
stringbuffer s2=new stringbuffer(s1.reverse().tostring());
if(s2.tostring().equals(s)) else
string regex1="[a-za-z][0-9a-za-z\\u4e00-\\u9fa5]";
string regex2="[a-za-z][0-9a-za-z\\u4e00-\\u9fa5]";
string regex3="[a-za-z][0-9a-za-z\\u4e00-\\u9fa5]";
string s="cts1234567890zxcvbnm";
boolean b1=s.matches(regex1);
boolean b2=s.matches(regex2);
boolean b3=s.matches(regex3);
system.out.println(b1||b2||b3);
string s1=s.substring(0, 3);
string s2=s.substring(3);
string s11=s1.replaceall("[a-za-z]","*");
string s12=s2.replaceall("[0-9a-za-z\\u4e00-\\u9fa5]", "*");
string s3=s.substring(0, 4);
string s4=s.substring(4);
string s23=s3.replaceall("[a-za-z]","*");
string s24=s4.replaceall("[0-9a-za-z\\u4e00-\\u9fa5]", "*");
string s5=s.substring(0, 5);
string s6=s.substring(5);
string s35=s5.replaceall("[a-za-z]","*");
string s36=s6.replaceall("[0-9a-za-z\\u4e00-\\u9fa5]", "*");
system.out.println((s11+s12).equals("********************")||(s23+s24).equals("********************")||(s35+s36).equals("********************"));
string regex="\\|";
string s="北京|上海|武漢|成都";
string s1=s.split(regex);
system.out.println(arrays.tostring(s1));
Java學習心得
string systemname system.getproperties getproperty os.name if systemname.tolowercase startswith win else 定義時間格式 private static datetimeformatter sf da...
JAVA學習心得 執行緒
1 執行緒的優先順序都在常數1 thread.min priority 到10 thread.max priority 之間。若沒有明確設定,則執行緒的優先順序為常數5 thread.norm priority 執行緒優先順序可以通過setpriority int grade 方法調整。getpri...
學習心得(一)
1.利用好手頭上的資源而不要一味地屯資源,資源只有被利用才是有價值的 2.關於筆記 筆記只是幫助我們學習和精進的一種工具,它只是一種方法,一種手段,但是絕不是我們的目的,沒有必要強迫自己在做筆記時,把每乙個字都寫的端正和美觀,把筆記做得完美,不僅消耗我們的時間,而且很可能它浪費了我們原本可以用來做題...