程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 一、圖解Java中String不可變性,javastring

一、圖解Java中String不可變性,javastring

編輯:JAVA綜合教程

一、圖解Java中String不可變性,javastring


這裡有一堆例子來說明Java的String的不可變性。

1、聲明一個String

String s = "abcd";


string對象不可變展示1
s 變量保存string對象的引用,下面的箭頭解釋成保存了哪個對象的引用。

 

2、 給一個String 變量賦值為另外一個String 變量。

String s2 = s;


String對象不可變展示2變量s2 保存這相同引用的值,它們都指向了同一對象的值。

 

3、連接String

 

s = s.concat("ef");


變量s 現在保存的是新創建的sting對象的引用。

 

string不可變引用3

總結:
一旦一個string 被在內存(堆)中創建,它就是不可以被改變的。我們應該注意的是所有的String方法都不會改變一個string的本身,而是返回一個新的string。

如果我們需要一個可以被改變的string,那麼我們可以使用StringBuffer(譯者注:線程安全)或StringBuilder。否則每創建一個新的string的時候,會浪費大量的時間在垃圾收集上。

這裡有個StringBuilder的應用例子。

public static String readFileToString() throws IOException {
        File dirs = new File(".");
        String filePath = dirs.getCanonicalPath() + File.separator+"src"+File.separator+"TestRead.java";
 
        StringBuilder fileData = new StringBuilder(1000);//Constructs a string buffer with no characters in it and the specified initial capacity
        BufferedReader reader = new BufferedReader(new FileReader(filePath));
 
        char[] buf = new char[1024];
        int numRead = 0;
        while ((numRead = reader.read(buf)) != -1) {
            String readData = String.valueOf(buf, 0, numRead);
            fileData.append(readData);
            buf = new char[1024];
        }
 
        reader.close();
 
        String returnStr = fileData.toString();
        System.out.println(returnStr);
        return returnStr;
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved