国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JDK 6和JDK 7中的substring()方法

coordinate35 / 2734人閱讀

摘要:中的,方法的實現與不同。為了簡單起見,方法表示這個帖子中的,。在調用時發生的事情在和中是不同的。中的字符串由后端的數組支持。在中,方法實際上是在堆中創建一個新數組。

JDK 6中的substring(int beginIndex,int endIndex)方法的實現與JDK 7不同。本文解釋了這些差異。為了簡單起見,substring()方法表示這個帖子中的substring(int beginIndex,int endIndex)。

1.什么是substring()呢?

substring(int beginIndex,int endIndex)方法返回一個以beginIndex開頭并以endIndex-1結尾的字符串。

String x =“abcdef”;
x = x.substring(1,3);
的System.out.println(X);

輸出:

bc

2.當substring()被調用時會發生什么?

你可能知道,因為x是不可變的,所以當x被賦予x.substring(1,3)的結果時,它指向一個新的字符串,如下所示:

但是,這個圖并不完全正確。在調用substring()時發生的事情在JDK 6和JDK 7中是不同的。

3.JDK 6中的substring()

字符串由后端的char數組支持。在JDK 6中,String類包含3個字段:char value [],int offset,int count。它們用于存儲真正的字符數組,數組的第一個索引,字符串中的字符數。

當substring()方法被調用時,它會創建一個新的字符串,但是字符串的值仍然指向堆中的同一個數組。兩個字符串之間的區別是它們的計數和偏移值。

下面的代碼是被簡化的,只是解釋這個問題的關鍵點。

//JDK 6
String(int offset, int count, char value[]) {
this.value = value;
this.offset = offset;
this.count = count;
}

public String substring(int beginIndex, int endIndex) {
//check boundary
return new String(offset + beginIndex, endIndex - beginIndex, value);
}

4.由JDK 6中的substring()引起的問題

如果你有一個非常長的字符串,但是你每次只需要使用子字符串()的一小部分。這會導致一個性能問題,因為你只需要一小部分,你就保留了全部。對于JDK 6,解決方案使用以下內容,這將使其指向一個真正的子字符串:

x = x.substring(x, y) + ""

5.JDK 7中的substring()

這在JDK 7中得到了改進。在JDK 7中,substring()方法實際上是在堆中創建一個新數組。

//JDK 7
public String(char value[], int offset, int count) {
//check boundary
this.value = Arrays.copyOfRange(value, offset, offset + count);
}

public String substring(int beginIndex, int endIndex) {
//check boundary
int subLen = endIndex - beginIndex;
return new String(value, beginIndex, subLen);
}

歡迎一起學習探討:html教程 java基礎 css教程

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68316.html

相關文章

  • Java核心技術教程整理,長期更新

    以下是Java技術棧微信公眾號發布的關于 Java 的技術干貨,從以下幾個方面匯總。 Java 基礎篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎篇 8張圖帶你輕松溫習 Java 知識 Java父類強制轉換子類原則 一張圖搞清楚 Java 異常機制 通用唯一標識碼UUID的介紹及使用 字符串...

    Anchorer 評論0 收藏0
  • Java 面試準備[二]

    摘要:關于字符串的個面試問題和方法是用于比較對象的引用地址的,或者說是否指向同一個變量。線程安全類,內部使用同步機制。另外,還需要盡早考慮多線程,原子性,內存使用量以及性能等因素。所以盡量不要把集合的成員變量暴露給調用者。 關于字符串的10個面試問題 1. == 和 equals()方法 == 是用于比較對象的引用地址的,或者說是否指向同一個變量。 equals是比較對象的真實值的 2...

    feng409 評論0 收藏0
  • Java 學習筆記

    摘要:參考資料程序設計北大唐大仕零基礎學語言浙大翁愷面向對象程序設計語言浙大翁愷在里面搜索可以查看和修改快捷鍵自動補全代碼格式化簡介歷史與一起發展萬維網所有信息用鏈接連接起來靜態網頁動態網頁的出現年開發工具包語法增加廣泛動態編譯腳本 參考資料 Java程序設計 - 北大 - 唐大仕 零基礎學Java語言 - 浙大 - 翁愷 面向對象程序設計——Java語言 - 浙大 - 翁愷 Ecl...

    tianlai 評論0 收藏0
  • Centos-7安裝zabbix

    摘要:,初始化完畢。。。解決圖形中文亂碼把它拷貝到的端的目錄下例如,確認后綴為 本例環境使用Centos7.3 64位 安裝zabbix需要mysql的支持,下面是快速安裝LNMP的方法(使用EZHTTP安裝) 安裝LNMP 首先創建一個目錄存放下載文件: [root@localhost ~]# mkdir /software [root@localhost software]# cd /s...

    charles_paul 評論0 收藏0
  • java學習(五) —— 常用API類概述

    摘要:成員方法類概述用于產生隨機數成員方法正則表達式相關方法判斷功能分割功能替換功能獲取功能和類的使用類概述包含一些有用的類字段和方法。注意它不能被實例化,因為此類構造器是私有的成員方法類類概述表示特定的瞬間,精確到毫秒。 前言 我們都知道,JDK包含了JRE,而JRE中也提供了各種功能的java類,現在我們就對這些類有個簡單了解,然后靈活運用。 常用類:Object類/Scanner類,...

    Tecode 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<