回覆列表
-
1 # 網路圈
-
2 # 山水1320
看到java,String這兩個單詞,真的是霧裡看花,水中望月。平時除了上上網,看看新聞或其他節目。對網際網路及電腦專業知識懂得甚少。看來還是那句老話,活到老學到老。藉此良機,學習新的知識何樂而不為呢。至於在jav中為什麼String字串可以作為物件來管理?從非專業的角度談一下看法。
java;是一門面向物件程式語言。
String:是程式語言的字串,如“USA",“美華人"。String是java等程式語言中的字串,字串是一個特殊的物件,屬於引用型別。在java中,String類物件建立後,字串一旦初始化就不能更改。因為字串類中所有的字串都是常量,所以資料無法更改。由於字串類的不可變更,因此可以共享。對於String的任何改變,都會返回一個新的String物件。據此原理,字串做為程式語言的引用詞語,肯定是要符合程式語言的程式需要而組成。規範的應用,也需要對字串物件的科學管理。也就是更簡捷準確的引用表達。
java經過二十多年的應用,越來越成熟,真的是日新月異,給人們的工作生活帶來了很大的方便。一個全新的高智慧化社會正在造福於全人類的共同進步。
我們知道,在Java中建立字串(物件)常見有多種方式:
1、Java字面量
"Java字串"2、直接定義字串常量
String str="Java字串";3、透過例項化String類來建立字串物件
String str=new String("Java字串");而Java中的String字串是可以直接當成物件來操作的,這是什麼原理呢?
Java中的字串本質上都是字串物件像以上定義“字串”的方式其實在Java虛擬機器中都是生成了字串物件,只不過這些字串物件在記憶體中的存取機制不同的。比如說:
1、字串字面量、字串常量池
Java中的字串字面量就是一對用雙引號括起來的字串,比如:“華人”。
字串常量是永生代,通俗的說就是常量池,當遇到 String str="字串" 時,編譯器會在永生代中檢查是否存在這個常量的引用,若存在則直接把地址賦給棧;若不存在則先在永生代中開闢記憶體空間,然後把地址賦給棧指標。
也就是說,字串常量池中存放的依舊是字串物件的引用。
2、例項化字串物件
這種方式會根據String物件再次建立一個String物件,從堆記憶體中new一塊新記憶體後將指標賦給棧指標。
綜上,無論是哪種方式建立的字串,其本質依舊是字串物件,所以在Java中字串可以當成物件來管理。