第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

表達(dá)式“新字符串(…)”的目的是什么?在爪哇?

表達(dá)式“新字符串(…)”的目的是什么?在爪哇?

胡說叔叔 2019-06-19 11:25:01
表達(dá)式“新字符串(…)”的目的是什么?在爪哇?在查看在線代碼示例時,我有時會遇到通過使用新運算符將字符串常量賦值給String對象的情況。例如:String s;...s = new String("Hello World");當(dāng)然,與s = "Hello World";我不熟悉這個語法,也不知道它的目的或效果。由于字符串常量通常存儲在常量池中,然后以JVM用于處理字符串常量的任何表示形式存儲,那么堆中甚至?xí)峙淙魏蝺?nèi)容嗎?
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻(xiàn)1865條經(jīng)驗 獲得超7個贊

你可能需要的地方new String(String)強(qiáng)制子字符串復(fù)制到新的基礎(chǔ)字符數(shù)組,如

small=new String(huge.substring(10,20))

然而,不幸的是,這種行為是無文檔化的,并且依賴于實現(xiàn)。

當(dāng)我將大型文件(有些高達(dá)20 MIB)讀入字符串并在事實發(fā)生后將其刻在行中時,我就被這種情況燒死了。最后,我得到了引用char[]的所有字符串,這些字符串由整個文件組成。不幸的是,在我保留的幾行代碼中,無意中保留了對整個數(shù)組的引用,時間比處理文件的時間還要長-我被迫使用。new String()來解決這個問題。

唯一與實現(xiàn)無關(guān)的方法是:

small=new String(huge.substring(10,20).toCharArray());

不幸的是,這個數(shù)組必須復(fù)制兩次,一次是toCharArray()一次在字符串構(gòu)造函數(shù)中。

需要有一種有文檔化的方法,通過復(fù)制現(xiàn)有字符串的字符或String(String)需要加以改進(jìn),以使它更加明確(其中有一個含義,但它相當(dāng)模糊和開放的解釋)。

假定“醫(yī)生”沒有規(guī)定的錯誤

針對不斷出現(xiàn)的評論,請注意new String()曾:

public String(String string) {
    value = string.value;
    offset = string.offset;
    count = string.count;}

沒錯,那里沒有底層數(shù)組的副本。然而,它仍然符合(Java 7)字符串文檔,因為它:

初始化新創(chuàng)建的字符串對象,使其表示與參數(shù)相同的字符序列;換句話說,新創(chuàng)建的字符串是參數(shù)字符串的副本。除非需要一個原始的顯式副本,否則就沒有必要使用這個構(gòu)造函數(shù),因為String是不可變的。

突出的一段是“論點的副本”。;它沒有說“參數(shù)字符串和支持該字符串的底層字符數(shù)組的副本”。

請注意,請將程序編寫到文獻(xiàn)資料而不是 實施.


查看完整回答
反對 回復(fù) 2019-06-19
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗 獲得超7個贊

我發(fā)現(xiàn)這種方法唯一有用的地方是聲明鎖變量:

private final String lock = new String("Database lock");....synchronized(lock){
    // do something}

在本例中,Eclipse等調(diào)試工具將在列出線程當(dāng)前持有或正在等待的鎖時顯示字符串。您必須使用“新字符串”,即分配一個新的字符串對象,因為否則共享字符串文本可能會鎖定在其他一些無關(guān)的代碼中。


查看完整回答
反對 回復(fù) 2019-06-19
?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗 獲得超5個贊

字符串S1=“foo”;文字將在StringPool中,S1將引用。

字符串s2=“foo”;這一次,它將檢查“foo”文字是否已經(jīng)在StringPool中可用,因為它現(xiàn)在已經(jīng)存在,因此S2將引用相同的文字。

字符串S3=新字符串(“foo”);“foo”文字將首先在StringPool中創(chuàng)建,然后通過String Arg構(gòu)造函數(shù)創(chuàng)建String對象,即由于通過新操作符創(chuàng)建對象而在堆中創(chuàng)建“foo”,然后S3將引用它。

字符串S4=新字符串(“foo”);與S3相同

所以System.out.println(S1=S2); //千真萬確因為字面上的比較。

System.out.println(S3=S4);// 假的由于對象比較(S3和S4在堆中的不同位置創(chuàng)建)


查看完整回答
反對 回復(fù) 2019-06-19
  • 3 回答
  • 0 關(guān)注
  • 417 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號