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

資訊專欄INFORMATION COLUMN

Java中的字符串

songjz / 2648人閱讀

摘要:對引用的對象在運行時拋出異常,空串是長度為的字符串,和別的字符串的區別就是長度為。一塊內存空間,堆中地址相同不同輸出分配兩塊內存空間,棧中地址不同輸出輸出輸出輸出解決方案類是可變的,不會再字符串常量池中,而在堆中。

1、JAVA中的字符串API詳解

String對象存儲字符串,String類位于java.lang包中.

String s="Hello world";
String s=new String();
String s=new String("Hello world");

String類length()方法,確定字符串長度;數組length是屬性;

String類equals()方法,比較兩個字符串內容是否一致(堆中數據);而不是用“==”比較(棧地址比較),Java中特有...
equalsIgnoreCase()方法:判讀兩者是否相等,忽略大小寫;
toLowerCase():全部轉為小寫;
toUpCase():全部轉為大寫;

數字轉為字符串:String number=1+"";

字符串相加:使用“+”
使用String類concat()方法

String s=new String("你好,");
String name=new String("張三!");
String sentence=s.concat(name);

注意:s.concat(name)返回值為連接后的字符串,而s并未變化!

trim()方法:去掉字符串中空格【前后空格去除,中間不去除】

字符串提取:public int indexOf(int ch)、public int indexOf(String value) 搜索第一個出現的字符ch(或字符串value);
public int lastIndexOf(int ch)、public int lastIndexOf(String value) 搜索最后一個出現的字符(或字符串value)【字符串中可能存在相同字符】;

public String substring(int index):提取從位置索引開始的字符串部分【包括index】

public String substring(int beginindex,int endindex):提取從beginindex開始,endindex結束字符串部分【含beginindex,不含endindex】

split(String value)方法:拆分字符串,分隔符是value,部分分隔符與正則表達式沖突:比如“|”,需要轉義“|”;

String caseString="ab,cde,fg";
String[] array=caseString.split(",");
for (String item:array) {
    System.out.println(item);
}

注意:空串與null區別,對未初始化的對象操作會被編譯器擋在門外;null是一個特殊的初始化值,是一個不指向任何對象的引用。對引用null的對象在運行時拋出異常,空串是長度為0的字符串,和別的字符串的區別就是長度為0。

2、JAVA字符串不變性與常量池

字符串不變性:字符串內存地址一旦分配之后,字符串是只讀的,不允許更改;字符串更改實際是開辟新內存空間,棧指針斷開指向新空間;舊控件編程垃圾!

常量池:String的不變性機制顯然會在String常量內有大量的冗余。因此,Java為了更有效地使用內存,JVM留出一塊特殊的內存區域,被稱為“String常量池”。
譬如String a="abc",當你定義這樣的變量時,java會先去常量池尋找有沒有""abc"這樣的字符串,如果有,直接把內存地址交給a,否則生成一個"abc"的字符串。當下一個String b="abc"時,JVM不會再次生成"abc",而是直接將"abc"引用給b,所以你會發現a==b。

Demo:

//一塊內存空間,堆中地址相同不同
String str1="java";
String str2="java";
System.out.println(str1==str2);
輸出:true.

//分配兩塊內存空間,棧中地址不同
String str1=new String("java");
String str2=new String("java");
System.out.println(str1==str2);
輸出:false.

String str1="java";
String str2="blog";
String s=str1+str2;
System.out.println(s=="javablog");
輸出:false.

String s="java"+"blog";
System.out.println(s=="javablog");
輸出:true.

String str2="blog";
String s="java"+str2;
System.out.println(s=="javablog");
輸出:false.

解決方案:
- StringBuffer類是可變的,不會再字符串常量池中,而在堆中。如果緩沖區溢出,容量自動增大,固定容量為16。
- StringBuilder

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

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

相關文章

  • Java JDK11中的新API

    摘要:將參數的所有字節寫入輸出流兩個允許指定的新構造函數。四個允許指定的新構造函數。返回從此字符串中提取的行的流,由行終止符分隔。如上所述,使用指定的將字符編碼為字節。返回此表示的執行客戶端中的包裝原因,如果原因不存在或未知,則返回。 有關API更改的完整列表,可在Github上獲得。 這里列出的是除了java.net.http和jdk.jfr模塊之外的所有新方法。沒有列出java.secu...

    pepperwang 評論0 收藏0
  • JavaScript中的正則表達式

    Javascript的正則表達式是前端中比較重要的部分,正則表達式主要用于字符串處理,表單驗證等場合,實用高效,文章主要對JavaScript中的正則的學習與總結 正則表達式的定義 正則表達式:是一個描述字符模式的對象,JavaScrip中正則表達式用RegExp對象表示,可以使用RegExp構造函數來創建正則對象 正則表達式的創建 1.字面量創建 var reg = /[a-z]/; 2.構...

    _Zhao 評論0 收藏0
  • java:String

    摘要:類是類它內部的方法也默認被修飾不能重寫字符串常量池當這樣聲明一個字符串會檢測字符串常量池中是否存在這個值的字符串如果存在就直接賦值給否則創建一個新的再賦值給當連續用同樣的方式聲明兩個字符串并作比較結果為這個操作符比較的是什么對于基本變量比較 String類是final類,它內部的方法也默認被final修飾,不能重寫. 字符串常量池 當這樣聲明一個字符串 String str = h...

    U2FsdGVkX1x 評論0 收藏0
  • 最最最常見的Java面試題總結——第二周

    摘要:與都繼承自類,在中也是使用字符數組保存字符串,,這兩種對象都是可變的。采用字節碼的好處語言通過字節碼的方式,在一定程度上解決了傳統解釋型語言執行效率低的問題,同時又保留了解釋型語言可移植的特點。 String和StringBuffer、StringBuilder的區別是什么?String為什么是不可變的? String和StringBuffer、StringBuilder的區別 可變性...

    yearsj 評論0 收藏0
  • 《深入理解Java虛擬機》(二)Java虛擬機運行時數據區

    摘要:虛擬機運行時數據區分為以下幾個部分。程序計數器也是在虛擬機規范中唯一沒有規定任何異常情況的區域。在方法運行期間不會改變局部變量表的大小。長度在位和位的虛擬機中,分別為官方稱它為。 Java虛擬機運行時數據區 詳解 2.1 概述 本文參考的是周志明的 《深入理解Java虛擬機》第二章 ,為了整理思路,簡單記錄一下,方便后期查閱。 2.2 運行時數據區域 Java虛擬機在Java程序運行時...

    draveness 評論0 收藏0

發表評論

0條評論

songjz

|高級講師

TA的文章

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