国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

javase---string類介紹01

2019-11-14 15:33:19
字體:
來源:轉載
供稿:網友
一、String類簡介
java.lang.String類用于描述一個字符序列。String類是不可變對象的類。其對象一旦被創建,永遠無法改變。但是對象的引用可以重新賦值。而且String類被final關鍵字修飾,其本身不能被繼承。String類內部封裝了字符數組以及針對字符數組操作的相關算法。
二、關于String類是不可變對象的幾點解釋
1、經常使用String類作為方法的參數,為了保證方法的調用正確,要求字符串內容不可以改變
2、出于內存的考慮,重用在開發中遠比修改多得多。所以Java在重用字符串的時候沒有新建新對象,而是都引用同一個。這就要求字符串內容不可變。出于性能的考慮,JVM會將靜態字符串(字面量/常量/常量連接的結果)在常量池中創建。并盡量使用同一對象重用靜態字符串。對于重復出現的靜態字符串,JVM會首先在常量池中查找,如果存在即返回該對象。不存在則創建。
public static void main(String[] args){        /**         * 當我們使用字符串字面值創建字符串對象時,         * 虛擬機會首先在常量池中查找,如果存在即返回該對象         */        String str1 = "hello";//字符串 類創建對象的時候不需要new        String str2 = "hello";        String str3 = "hello";        String str4 = new String("hello");        System.out.PRintln(str1 == str2);//使用==比較字符串的時候比較的是地址,而不是內容。         System.out.println(str1 == str3);        System.out.println(str1 == str4);//false        System.out.println(str1.equals(str4));//true //使用equals方法比較的是字符串中的內容}

str2,str3不會創建新的對象,而是使用常量池中已有的Hello。str4使用new關鍵字會創建一個新的對象。

三、編譯器對字面值量的優化

編譯器在編譯源文件的時候若發現表達式的兩邊都是常量的話,會先進行計算,在將結果生成到字節碼文件中去。所以jvm運行.class文件的時候。下面的內容應該是這樣的。 

String str5 = "123"+"abc";//編譯器先進行運算String str5 = "123abc";String s = "123";//編譯器不運算,因為s是變量String str6 = s + "abc";

四、String類在內存中采用Unicode編碼,每個字符在內存中都占用兩個字節(不管中英文)。而且每個字符的長度都是1(不管中英文)。

public static void main(String[] args) {        String str = "好好努力,學好java";        System.out.println(str.length());//11    }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盖州市| 什邡市| 双桥区| 高州市| 巴中市| 四川省| 昆明市| 宿州市| 鲁甸县| 盐池县| 新巴尔虎左旗| 桂东县| 桦甸市| 沈阳市| 承德县| 临沭县| 淄博市| 靖江市| 唐山市| 宜宾县| 兰考县| 寻甸| 钟祥市| 涡阳县| 浪卡子县| 龙口市| 石阡县| 交口县| 桐柏县| 永城市| 内黄县| 万荣县| 河曲县| 赤峰市| 色达县| 彭水| 乌拉特中旗| 花莲县| 仪征市| 白城市| 天峻县|