String 那些事兒

2021-07-30 09:06:51 字數 1844 閱讀 6112

string ,byte之間的轉換

string—>byte:

byte b;

string str=new string(b);

byte -->string:

string str="";

byte b=str.getbyte();

string 與inputstream之間的轉換

string —>inputstream

string str="";

inputstream in=new bytearrayinputstream(str.getbyte());

inputstream—>string

public   string   inputstream2string   (inputstream   in)   throws   ioexception    

return   out.tostring();  } 

方法二:

public   static   string   inputstream2string(inputstream   is)   throws   ioexception 

return   baos.tostring();  }

byte與inputstream之間的轉換

byte -->inputstream

inputstream sbs = new bytearrayinputstream(byte buf); 

inputstream --->byte

public

static

final

byteinput2byte(inputstream instream)  

throwsioexception   

bytein2b = swapstream.tobytearray();  

returnin2b;  

}"=="和「equals」的區別

string a="abc" ;

string c=「abc";

string b=new string ("abc");

"=="和「equals」都可以用於值得比較,但是在應用於字串的比較的時候,「==」比較的是兩個物件的引用,上面a的值是abc,b的值也是abc,但是==返回的是false;因為b是乙個新生成的乙個物件;而c==a返回true,因為在string物件池中已經存在乙個字串abc,這時候jvm就會在棧中去找有沒有乙個值一樣的物件,如果有只是從棧中將資料拿出來即可,並沒有生成乙個新的物件。當在 棧中找不到賦值給它的值得時候才會建立乙個物件。

stringbuffer 和stringbuilder的區別

兩者都可以用來動態的擴充字串,避免不必要的string物件的生成,例如string abcd=a+b+c+d ;這個字串生成了兩個不必要的字串物件 ab和abc,所以使用上述兩個可以避免此現象,但是stringbuffer是執行緒不安全的,而stringbuilder是執行緒安全的。

string 字串為null的問題

string str="";

boolean flag=false;

if(str!=null)

結果為true;

str是乙個空的字串,但是在判斷str!=null的時候返回的是true ,此時str是乙個空的字串,已經通過new生成了乙個空的字串物件,但是null還沒有生成乙個字串物件,未指向任何記憶體空間,null和「」是不等價的。"".length() 為0,但是並不等於null。

鏈結那些事兒

鏈結,就是將不同部分的 和資料收集和組合成為乙個單一檔案的過程,這個檔案可被載入到儲存器中執行。鏈結可以執行於編譯時 compile time 也就是源 被翻譯成機器 時 eg.普通的鏈結器鏈結,以及靜態鏈結庫,由靜態鏈結器鏈結 也可以執行於載入時 例如動態鏈結庫的載入時鏈結 也可以執行於執行時 r...

指標那些事兒

1.野指標 也叫懸擺指標,迷失指標 野指標是導致bug的罪魁禍首之一。對指標呼叫delete後 釋放掉了它指向的記憶體,野指標還是指向原來的位址 如果沒有重新賦值就使用它,將導致難以預料的後果。因為此時操作野指標,它指向的記憶體位址可能已經分配給其他變數在使用了。所以指標在delete之後,如果不再...

遞迴那些事兒

include include include include 求階乘 int fac int n if n 1 求累加 int add int n 求字串長度 int my strlen const char dest int main 遞迴注意事項 遞迴雖然經典,但是也有他的缺點 第一 遞迴是反...