導航:首頁 > 編程語言 > javastringclass

javastringclass

發布時間:2022-04-29 01:26:21

java中的String類

Java運行環境有一個類似字元串池的東東。
1.
執行語句String
str="str"時,首先查看字元串池中是否存在字元串"abc",如果存在則直接將"abc"的引用給str,如果不存在則先在字元串池中新建一個字元串"abc",然後再將其引用給給str。
2.
執行語句String
str
=
new
String(
"str");
首先在String池內找,找到?不創建String對象,否則創建,
這樣就一個String對象;然後遇到new運算符號,又在內存上創建String對象,並將其返回給str,又一個對象
所以總共是2個

例:
String
s1="str";
String
s2="str";
String
s3=new
String("str");
String
s4=new
String("str");
system.out.println(s1==s2);
//
true
system.out.println(s1==s3);
//
false
system.out.println(s3==s4);
//
false

② 如何能看到java中string類的實現源代碼

首先,需要下載JDK源代碼(Oracle官網找或者搜一下,到處都有),一般會打成zip包做下載,下載後並不需要進行解壓;

然後,可使用以下幾種方式將class文件與源文件進行關聯:
(1) 如果你沒有進行關聯過,可以在Editor中寫下如下的語句:
String str = null;
然後按住Ctrl鍵, 用滑鼠左鍵點擊"String",
就會彈出 Class File Editor 的界面讓你關聯源文件,
點擊界面上的"Attach Source..."按鈕,
在彈出的"Source Attachment Configuration"界面中,
點擊"External File", 選擇你下載的源文件zip包,一路OK即可;

(2) 在項目中找到 JRE System Library,定位到如下:
JRE System Library -> rt.jar -> java->lang->String.class
雙擊String.class,即彈出關聯源文件的界面;

(3) 在項目中找到 JRE System Library, 定位到 rt.jar,
滑鼠右鍵點擊,在彈出的界面中選擇"Properties...",
在彈出的界面中,左邊默認會選中"Java Source Attachment",
在右邊進行源文件的關聯;

(4) Window->Preferences->Java->Installed JREs
在右邊的"Installed JREs:"窗口中選中所使用的JRE,
點擊其右邊的"Edit",在彈出的"Edit JRE"窗口中,
有一個"JRE system libraries:"列表,
在其中找到 "...jdk1.6.0_13\jre\lib\rt.jar" 並選中,
點擊右邊的"Source Attachment...",
在彈出的"Source Attachment Configuration"界面中,
點擊文本框右邊的"External File",
選擇你下載的源文件zip包,一路OK即可;

③ java 中string類怎麼實現

ava字元串類(java.lang.String)是Java中使用最多的類,也是最為特殊的一個類,很多時候,我們對它既熟悉又陌生。
一、從根本上認識java.lang.String類和String池
首先,我建議先看看String類的源碼實現,這是從本質上認識String類的根本出發點。從中可以看到:
1、String類是final的,不可被繼承。public final class String。
2、String類是的本質是字元數組char[], 並且其值不可改變。private final char value[];
然後打開String類的API文檔,可以發現:
3、String類對象有個特殊的創建的方式,就是直接指定比如String x = "abc","abc"就表示一個字元串對象。而x是"abc"對象的地址,也叫
做"abc"對象的引用。
4、String對象可以通過「+」串聯。串聯後會生成新的字元串。也可以通過concat()來串聯,這個後面會講述。
6、Java運行時會維護一個String Pool(String池),JavaDoc翻譯很模糊「字元串緩沖區」。String池用來存放運行時中產生的各種字元串,
並且池中的字元串的內容不重復。而一般對象不存在這個緩沖池,並且創建的對象僅僅存在於方法的堆棧區。

④ java中int.Class和String.Class指什麼,麻煩誰能詳細解釋一下。

它們是Class類型的對象。
關於Class類型,你參考下《JAVA核心技術》的描述:
程序在運行期間,JAVA運行時系統始終為所有對象維護一個被稱為運行時的類型標識,這個信息保存這沒個對象所屬的類的足跡。虛擬機利用運行時信息選擇相應的方法執行。
保存這些信息的類就是Class類

⑤ 關於java中String類!!!!

ava字元串類(java.lang.String)是Java中使用最多的類,也是最為特殊的一個類,很多時候,我們對它既熟悉又陌生。
一、從根本上認識java.lang.String類和String池
首先,我建議先看看String類的源碼實現,這是從本質上認識String類的根本出發點。從中可以看到:
1、String類是final的,不可被繼承。public final class String。
2、String類是的本質是字元數組char[], 並且其值不可改變。private final char value[];
然後打開String類的API文檔,可以發現:
3、String類對象有個特殊的創建的方式,就是直接指定比如String x = "abc","abc"就表示一個字元串對象。而x是"abc"對象的地址,也叫
做"abc"對象的引用。
4、String對象可以通過「+」串聯。串聯後會生成新的字元串。也可以通過concat()來串聯,這個後面會講述。
6、Java運行時會維護一個String Pool(String池),JavaDoc翻譯很模糊「字元串緩沖區」。String池用來存放運行時中產生的各種字元串,
並且池中的字元串的內容不重復。而一般對象不存在這個緩沖池,並且創建的對象僅僅存在於方法的堆棧區。
5、創建字元串的方式很多,歸納起來有三類:
其一,使用new關鍵字創建字元串,比如String s1 = new String("abc");
其二,直接指定。比如String s2 = "abc";
其三,使用串聯生成新的字元串。比如String s3 = "ab" + "c";
二、String對象的創建
String對象的創建也很講究,關鍵是要明白其原理。
原理1:當使用任何方式來創建一個字元串對象s時,Java運行時(運行中JVM)會拿著這個X在String池中找是否存在內容相同的字元串對象,
如果不存在,則在池中創建一個字元串s,否則,不在池中添加。
原理2:Java中,只要使用new關鍵字來創建對象,則一定會(在堆區或棧區)創建一個新的對象。
原理3:使用直接指定或者使用純字元串串聯來創建String對象,則僅僅會檢查維護String池中的字元串,池中沒有就在池中創建一個,有則罷
了!但絕不會在堆棧區再去創建該String對象。
原理4:使用包含變數的表達式來創建String對象,則不僅會檢查維護String池,而且還會在堆棧區創建一個String對象。
另外,String的intern()方法是一個本地方法,定義為public native String intern(); intern()方法的價值在於讓開發者能將注意力集中到
String池上。當調用 intern 方法時,如果池已經包含一個等於此 String 對象的字元串(該對象由 equals(Object) 方法確定),則返回池
中的字元串。否則,將此 String 對象添加到池中,並且返回此 String 對象的引用。
三、不可變類
不可改變的字元串具有一個很大的優點:編譯器可以把字元串設置為共享。
不可變類String有一個重要的優點-它們不會被共享引用。
是這樣的,JAVA為了提高效率,所以對於String類型進行了特別的處理---為string類型提供了串池
定義一個string類型的變數有兩種方式:
string name= "tom ";
string name =new string( "tom ")
使用第一種方式的時候,就使用了串池,
使用第二中方式的時候,就是一種普通的聲明對象的方式
如果你使用了第一種方式,那麼當你在聲明一個內容也是 "tom "的string時,它將使用串池裡原來的那個內存,而不會重新分配內存,也就是說,string saname= "tom ",將會指向同一塊內存
另外關於string類型是不可改變的問題:
string類型是不可改變的,也就是說,當你想改變一個string對象的時候,比如name= "madding "
那麼虛擬機不會改變原來的對象,而是生成一個新的string對象,然後讓name去指向它,如果原來的那個 "tom "沒有任何對象去引用它,虛擬機的垃圾回收機制將接收它。
據說這樣可以提高效率!!!

⑥ java中string是什麼類型

Java 中 string 不屬於基本的數據類型,只是代表一個類,是一個引用類型。String是引用類型,不過java有字元串常量池機制,聲明字元串常量或者字元串常量連接都要用到字元串常量池。如果常量池中有該字元串序列則返回,所以str創建了一個字元串並放入常量池中,str2內的字元序列已在常量池中所以str2直接指向str指向的對象。
基本數據類型就只有八個,數值型:byte,short,int,long,浮點型:float,double,字元型:char,布爾型:boolean。

⑦ java string是什麼類型

Java中String是一個特殊的包裝類數據,有兩種創建形式:

  1. String s = "abc";
  2. String s = new String("abc");

第一種先在棧中創建一個對String類的對象引用變數s,然後去查找"abc"是否被保存在字元串常量池中,如果沒有則在棧中創建三個char型的值'a'、'b'、'c',然後在堆中創建一個String對象object,它的值是剛才在棧中創建的三個char型值組成的數組{'a'、'b'、'c'},接著這個String對象object被存放進字元串常量池,最後將s指向這個對象的地址,如果"abc"已經被保存在字元串常量池中,則在字元串常量池中找到值為"abc"的對象object,然後將s指向這個對象的地址。

第一種特點:JVM會自動根據棧中數據的實際情況來決定是否有必要創建新對象。

第二種可以分解成兩步1、String object = "abc"; 2、String s = new String(object); 第一步參考第一種創建方式,而第二步由於"abc"已經被創建並保存到字元串常量池中,因此jvm只會在堆中新創建一個String對象,它的值共享棧中已有的三個char型值。

第二種特點:一概在堆中創建新對象,而不管其字元串值是否相等,是否有必要創建新對象。

在講字元串比較前,必須要了解==和equals的區別:

因為java所有類都繼承於Object基類,而Object中equals用==來實現,所以equals和==是一樣的,都是比較對象地址,java api里的類大部分都重寫了equals方法,包括基本數據類型的封裝類、String類等。對於String類==用於比較兩個String對象的地址,equals則用於比較兩個String對象的內容(值)。

⑧ java中string類的方法有哪些

方法摘要
char charAt(int index)
返回指定索引處的 char 值。
int codePointAt(int index)
返回指定索引處的字元(Unicode 代碼點)。
int codePointBefore(int index)
返回指定索引之前的字元(Unicode 代碼點)。
int codePointCount(int beginIndex, int endIndex)
返回此 String 的指定文本范圍中的 Unicode 代碼點數。
int compareTo(String anotherString)
按字典順序比較兩個字元串。
int compareToIgnoreCase(String str)
不考慮大小寫,按字典順序比較兩個字元串。
String concat(String str)
將指定字元串聯到此字元串的結尾。
boolean contains(CharSequence s)
當且僅當此字元串包含 char 值的指定序列時,才返回 true。
boolean contentEquals(CharSequence cs)
當且僅當此 String 表示與指定序列相同的 char 值時,才返回 true。
boolean contentEquals(StringBuffer sb)
當且僅當此 String 表示與指定的 StringBuffer 相同的字元序列時,才返回 true。
static String ValueOf(char[] data)
返回指定數組中表示該字元序列的字元串。
static String ValueOf(char[] data, int offset, int count)
返回指定數組中表示該字元序列的字元串。
boolean endsWith(String suffix)
測試此字元串是否以指定的後綴結束。
boolean equals(Object anObject)
比較此字元串與指定的對象。
boolean equalsIgnoreCase(String anotherString)
將此 String 與另一個 String 進行比較,不考慮大小寫。
static String format(Locale l, String format, Object... args)
使用指定的語言環境、格式字元串和參數返回一個格式化字元串。
static String format(String format, Object... args)
使用指定的格式字元串和參數返回一個格式化字元串。
byte[] getBytes()
使用平台默認的字元集將此 String 解碼為位元組序列,並將結果存儲到一個新的位元組數組中。
void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
已過時。 該方法無法將字元正確轉換為位元組。從 JDK 1.1 起,完成該轉換的首選方法是通過 getBytes() 構造方法,該方法使用平台的默認字元集。
byte[] getBytes(String charsetName)
使用指定的字元集將此 String 解碼為位元組序列,並將結果存儲到一個新的位元組數組中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
將字元從此字元串復制到目標字元數組。
int hashCode()
返回此字元串的哈希碼。
int indexOf(int ch)
返回指定字元在此字元串中第一次出現處的索引。
int indexOf(int ch, int fromIndex)
從指定的索引開始搜索,返回在此字元串中第一次出現指定字元處的索引。
int indexOf(String str)
返回第一次出現的指定子字元串在此字元串中的索引。
int indexOf(String str, int fromIndex)
從指定的索引處開始,返回第一次出現的指定子字元串在此字元串中的索引。
String intern()
返回字元串對象的規范化表示形式。
int lastIndexOf(int ch)
返回最後一次出現的指定字元在此字元串中的索引。
int lastIndexOf(int ch, int fromIndex)
從指定的索引處開始進行後向搜索,返回最後一次出現的指定字元在此字元串中的索引。
int lastIndexOf(String str)
返回在此字元串中最右邊出現的指定子字元串的索引。
int lastIndexOf(String str, int fromIndex)
從指定的索引處開始向後搜索,返回在此字元串中最後一次出現的指定子字元串的索引。
int length()
返回此字元串的長度。
boolean matches(String regex)
通知此字元串是否匹配給定的正則表達式。
int offsetByCodePoints(int index, int codePointOffset)
返回此 String 中從給定的 index 處偏移 codePointOffset 個代碼點的索引。
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
測試兩個字元串區域是否相等。
boolean regionMatches(int toffset, String other, int ooffset, int len)
測試兩個字元串區域是否相等。
String replace(char oldChar, char newChar)
返回一個新的字元串,它是通過用 newChar 替換此字元串中出現的所有 oldChar 而生成的。
String replace(CharSequence target, CharSequence replacement)
使用指定的字面值替換序列替換此字元串匹配字面值目標序列的每個子字元串。
String replaceAll(String regex, String replacement)
使用給定的 replacement 字元串替換此字元串匹配給定的正則表達式的每個子字元串。
String replaceFirst(String regex, String replacement)
使用給定的 replacement 字元串替換此字元串匹配給定的正則表達式的第一個子字元串。
String[] split(String regex)
根據給定的正則表達式的匹配來拆分此字元串。
String[] split(String regex, int limit)
根據匹配給定的正則表達式來拆分此字元串。
boolean startsWith(String prefix)
測試此字元串是否以指定的前綴開始。
boolean startsWith(String prefix, int toffset)
測試此字元串是否以指定前綴開始,該前綴以指定索引開始。
CharSequence subSequence(int beginIndex, int endIndex)
返回一個新的字元序列,它是此序列的一個子序列。
String substring(int beginIndex)
返回一個新的字元串,它是此字元串的一個子字元串。
String substring(int beginIndex, int endIndex)
返回一個新字元串,它是此字元串的一個子字元串。
char[] toCharArray()
將此字元串轉換為一個新的字元數組。
String toLowerCase()
使用默認語言環境的規則將此 String 中的所有字元都轉換為小寫。
String toLowerCase(Locale locale)
使用給定 Locale 的規則將此 String 中的所有字元都轉換為小寫。
String toString()
返回此對象本身(它已經是一個字元串!)。
String toUpperCase()
使用默認語言環境的規則將此 String 中的所有字元都轉換為大寫。
String toUpperCase(Locale locale)
使用給定的 Locale 規則將此 String 中的所有字元都轉換為大寫。
String trim()
返回字元串的副本,忽略前導空白和尾部空白。
static String valueOf(boolean b)
返回 boolean 參數的字元串表示形式。
static String valueOf(char c)
返回 char 參數的字元串表示形式。
static String valueOf(char[] data)
返回 char 數組參數的字元串表示形式。
static String valueOf(char[] data, int offset, int count)
返回 char 數組參數的特定子數組的字元串表示形式。
static String valueOf(double d)
返回 double 參數的字元串表示形式。
static String valueOf(float f)
返回 float 參數的字元串表示形式。
static String valueOf(int i)
返回 int 參數的字元串表示形式。
static String valueOf(long l)
返回 long 參數的字元串表示形式。
static String valueOf(Object obj)
返回 Object 參數的字元串表示形式。
從類 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait

⑨ java中類似String.class是什麼用法

String.class這是反射的用法,得到一個String的Class類.你居然知道了就把分給俺得了。哈哈!
Class<String>這個看你也明白了。泛型哈哈。意思是返回一個String的類

⑩ java string類怎麼使用

String 類代表字元串。Java 程序中的所有字元串字面值(如 "abc"
)都作為此類的實例實現。
字元串是常量;它們的值在創建之後不能更改。字元串緩沖區支持可變的字元串。因為 String 對象是不可變的,所以可以共享。例如:

String str = "abc";

等效於:

char data[] = {'a', 'b', 'c'};
String str = new String(data);

下面給出了一些如何使用字元串的更多示例:

System.out.println("abc");
String cde = "cde";
System.out.println("abc" + cde);
String c = "abc".substring(2,3);
String d = cde.substring(1, 2);

String
類包括的方法可用於檢查序列的單個字元、比較字元串、搜索字元串、提取子字元串、創建字元串副本並將所有字元全部轉換為大寫或小寫。大小寫映射基於 Character 類指定的 Unicode
標准版。
Java 語言提供對字元串串聯符號("+")以及將其他對象轉換為字元串的特殊支持。---摘自JDK API 1.6.0中文版,建議你去下載一個,裡面提供更詳細的解釋,是Java開發不可缺少的幫助文檔。

閱讀全文

與javastringclass相關的資料

熱點內容
數學奇跡神奇運演算法 瀏覽:359
大廠的程序員的水平如何 瀏覽:700
遺傳演算法入門經典書籍 瀏覽:878
源碼炮台腳本 瀏覽:620
在位編輯命令 瀏覽:347
曲式分析基礎教程pdf 瀏覽:14
php生成靜態html頁面 瀏覽:964
怎麼分割pdf 瀏覽:812
壓縮垃圾報警器 瀏覽:628
小公司一般都用什麼伺服器 瀏覽:967
java獲取時間gmt時間 瀏覽:820
為什麼csgo一直連接不到伺服器 瀏覽:504
安卓登ins需要什麼 瀏覽:836
機器人演算法的難點 瀏覽:226
全自動化編程 瀏覽:726
程序員高薪限制 瀏覽:693
壓縮圖片壓縮 瀏覽:75
美國發明解壓魔方 瀏覽:302
電腦怎麼備案網上伺服器 瀏覽:515
旅行商問題Python寫法 瀏覽:952