Ⅰ java中string是什麼類型
Java 中 string 不屬於基本的數據類型,只是代表一個類,是一個引用類型。String是引用類型,不過java有字元串常量池機制,聲明字元串常量或者字元串常量連接都要用到字元串常量池。如果常量池中有該字元串序列則返回,所以str創建了一個字元串並放入常量池中,str2內的字元序列已在常量池中所以str2直接指向str指向的對象。
基本數據類型就只有八個,數值型:byte,short,int,long,浮點型:float,double,字元型:char,布爾型:boolean。
Ⅱ java中string是干什麼
java中String[][] 表示二維數組String,string[]表示一維數組string。
數組是在java中用來存放多個數據或者字元串的,是用於儲存多個相同類型數據的集合。數組在java中常常用來堆內存或者棧內存。
格式為數據類型+數組名稱+n[](表示n維數組)
舉例:
int a[10]; 說明整型數組a,有10個元素。若要表示第10個元素,則使用a[9]。第一個則是a[0]。
float b[10],c[20]; 說明實型數組b,有10個元素,實型數組c,有20個元素。
char ch[20]; 說明字元數組ch,有20個元素。
(2)java中string類型擴展閱讀
數組的使用規則:
1、數組的類型實際上是指數組元素的取值類型。對於同一個數組,其所有元素的數據類型都是相同的。
2、數組名的書寫規則應符合標識符的書寫規定。
3、數組名不能與其它變數名相同。
4、可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
5、只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;(請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。)
6、如不給可初始化的數組賦初值,則全部元素均為0值。
7、如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如:static int a[5]={1,2,3,4,5};可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
Ⅲ java string是什麼類型
Java中String是一個特殊的包裝類數據,有兩種創建形式:
第一種先在棧中創建一個對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類型是什麼意思
String是字元串類型,他是一個對象,在java中,比如:
String s="hello";創建了一個字元串常量s,賦值為hello
String ss = new String("hello");
創建了一個String對象ss,這個對象的引用是ss,它的值在堆內存中是hello
Ⅳ 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類型比較
string類型比較有很多種,我們主要來講一下用的比較多的兩種(equals和==)
例如:
String s1,s2,s3 = "abc", s4 ="abc" ;
s1 = new String("abc");
s2 = new String("abc");
那麼:
s1==s2 是 false //兩個變數的內存地址不一樣,也就是說它們指向的對象不 一樣,故不相等。
s1.equals(s2) 是 true //兩個變數的所包含的內容是abc,故相等。
總結:"=="比較的是兩個變數的內存地址,equals比較的是內容;
左上角有我頭像,歡迎來學習交流;
Ⅶ string是java中什麼類型的...
String不屬於8種基本數據類型,String是一個對象
因為對象的默認值是null,所以String的默認值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。
Ⅷ 關於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 "沒有任何對象去引用它,虛擬機的垃圾回收機制將接收它。
據說這樣可以提高效率!!!