黑馬程序員__String類問題總結

------Java培訓期待與您交流! -------

char類型只能表示單個字符,而由多個字符鏈接而成的稱爲字符串。一般Java中使用java.long.String來建立字符串對象java


構建字符串對象編程

String str;              //默認爲null
public String(char arr[])//建立數組
char a[]={'g','o','o','d'};
String s=new String(a);//=>等同於  String s=new String("good")
String s="good";


------------------------------------------數組

字符串特性:app

1.字符串最大特色:一旦被初始化就不能夠改變ide

能夠修改地址值的指引,可是內容是不會改變的ui

String s="abc";   s="kk";加密

s的地址指引改變了,內容是不變的spa

---------orm

2.String類複寫了Object類的equals方法對象

Object.equals()是比較地址值是否相同

String.equals()複寫後,比較內容是否相同

String s1="abc";
String s2=new String("abc");
String s3="abc";
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
System.out.println(s1==s3);


3.  s1和s2有什麼區別

s1在內存中有一個對象

s2在內存中含有兩個對象


4.s1和s3的地址值是相同的,s1和s2是不一樣的

由於首先String會開闢一個Sting常量池,而後若是有相同的值時,會指引同一個地址值

若是new Stirng("abc"),那麼會新建一個Stirng的對象,放入abc,地址就不用了



-------------------------------------------------


StringBuilder是一個可動態變量,能夠 自適應大小自調節佔用的內存數,適用於須要頻繁附加字符的時候使用。


StringBuilder builder=new StringBuilder(x);  x爲String類型




append()方法,在原有字符後邊添加字符

insert(int offset,arg)方法,指定下標,添加內容

delete(int start,int end) 方法。指定指標位置刪除,若是不存在位置,那麼會從最頭或者最尾。

reverse()反轉字符串


-----------

public static void main(String[] args){
String str="";
long startTime=System.currentTimeMillis();
for (int i=0;i<10000;i++){
str=str+i;
}
long endTime=System.currentTimeMillis();
long midTime=endTime-startTime;
System.out.println(midTime+"ms");
StringBuilder builder=new StringBuilder("");
startTime=System.currentTimeMillis();
for (int i=0;i<10000;i++){
builder.append(i);
}
endTime=System.currentTimeMillis();
midTime=endTime-startTime;
System.out.println(midTime+"ms");
}

以上是用String和StringBuilder的擴展時間

發現,StringBuilder擴展空間時速度更快,並且不會佔用多餘的塊,而String須要重複新建空間,鏈接舊的空間,耗時時間更長


------------------

如下是用數組和轉型的實例:

1.數組通常是比較固定的,不要修改數組的元素,須要修改的話,能夠新建Stirng變量進行存儲數組值

2.轉型

string-->char[]

char[i]-->string

char[i]-->int

int-->char[i]




/**編程實現對鍵盤輸入的英文名句子進行加密。用加密方法爲:當內容爲英文字母時,用26字母中的其後三個字母代替該字母,若爲其它字符時不變。

*好比245a95n加密後是245bcd95opq。

*/

public static void main(String[] args) {
String str="245a95y";
String tmp1="";
char[] cha1=str.toCharArray();
System.out.println(str);
//System.out.println((int)'a'+"\t"+(int)'z');
for (int i=0;i<cha1.length;i++){
int tmp=(int)cha1[i];
if (97<= tmp && tmp<=119){
tmp1+=(char)(tmp+1);
tmp1+=(char)(tmp+2);
tmp1+=(char)(tmp+3);
}else if (tmp>119 && tmp<=122){
tmp1+=(char)(tmp-32);
tmp1+=(char)(tmp-32-1);
tmp1+=(char)(tmp-32-2);
}else{
tmp1+=cha1[i];
}
}
System.out.println(tmp1);
}

-----------------------------------------

-------------------------------------------------------

String.format(Local local,String format,Object...args)



Date dae =new Date();

String day=String.format("%te",date);


常見的日期時間轉換符。(太多寫下基本的,其他的查閱吧)

$tY

%tm

%tD

%tH

%tM

$tS




常見組合

%tF2014-01-01

%tD01/01/14

%tc週二 一月 1 00:00:00 CST 2014

%tr00:00:00 下午

%tT00:00:00

%tR00:00



常見日期格式化轉換符 

轉換符 說  明 示  例 

%te 一個月中的某一天(1~31)

%tb 指定語言環境的月份簡稱 Feb(英文)、二月(中文) 

%tB 指定語言環境的月份全稱 February(英文)、二月(中文) 

%tA 指定語言環境的星期幾全稱 Monday(英文)、星期一(中文) 

%ta 指定語言環境的星期幾簡稱 Mon(英文)、星期一(中文) 

%tc 包括所有日期和時間信息 星期四 十一月 26 10:26:30 CST 2009 

%tY 4位年份 2009 

%tj 一年中的第幾天(001~366) 085 

%tm 月份 03 

%td 一個月中的第幾天(01~31) 08 

%ty 2位年份 09 


時間格式化轉換符 

轉換符 說  明 示  例 

%tH 2位數字的24小時制的小時(00~23) 14 

%tI 2位數字的12小時制的小時(01~12) 05 

%tk 2位數字的24小時制的小時(1~23)

%tl 2位數字的12小時制的小時(1~12) 10 

%tM 2位數字的分鐘(00~59) 05 

%tS 2位數字的秒數(00~60) 12 

%tL 3位數字的毫秒數(000~999) 920 

%tN 9位數字的微秒數(000000000~999999999) 062000000000 

%tp 指定語言環境下上午或下午標記 下午(中文)、pm(英文) 

%tz 相對於GMT RFC 82格式的數字時區偏移量 +0800 

%tZ 時區縮寫形式的字符串 CST 

%ts 1970-01-01 00:00:00至如今通過的秒數 1206426646 

%tQ 1970-01-01 00:00:00至如今通過的毫秒數 1206426737453 


常見的日期時間組合轉換符 

轉換符 說  明 示  例 

%tF 「年-月-日」格式(4位年份) 2009-01-26 

%tD 「月/日/年」格式(2位年份) 03/25/09 

%tr 「時:分:秒 PM(AM)」格式(12小時制) 03:22:06 下午 

%tT 「時:分:秒」格式(24小時制) 15:23:50 

%tR 「時:分」格式(24小時制) 15:23 


----------------------------

相關文章
相關標籤/搜索