題目:
public
class test
}
輸出結果:
true
false
false
false
解析:直接把上面**進行反編譯一下就知道其中的原理了。
上面可以進行如下理解:
string a = "hello";
string b = "hello";
string tmp = string.valueof(a);
stringbuilder sb = new stringbuilder(tmp);
string c = sb.tostring();
string tmp = string.valueof(a);
stringbuilder sb = new stringbuilder(tmp);
string d = sb.tostring();
string tmp = string.valueof(a);
stringbuilder sb = new stringbuilder(tmp);
string e = sb.tostring();
補充:類的final變數和普通變數有什麼區別?
public
class test
}
結果:
true
false
這裡面就是final變數和普通變數的區別了,當final變數是基本資料型別以及string型別時,如果在編譯期間能知道它的確切值,則編譯器會把它當做編譯期常量使用。也就是說在用到該final變數的地方,相當於直接訪問的這個常量,不需要在執行時確定。這種和c語言中的巨集替換有點像。因此在上面的一段**中,由於變數b被final修飾,因此會被當做編譯器常量,所以在使用到b的地方會直接將變數b 替換為它的值。而對於變數d的訪問卻需要在執行時通過鏈結來進行。
下面反編譯一下看一下就知道確實編譯器做了手腳。
不過要注意,只有在編譯期間能確切知道final變數值的情況下,編譯器才會進行這樣的優化,比如下面的這段**就不會進行優化:
public
class test
public
static string gethello()
}
這段**的輸出結果為false。 字串程式設計題一道
package cn.exercise.algorithmstest 編寫乙個擷取字串的函式,輸入為乙個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截去半個,列如 人abc 4應該擷取為 人ab 輸入 人abc們def 6,應該輸出 人abc 而不是 人abc 半個們 author ...
一道字串貪心題
dna序列 dna.c cpp in out 時間限制 2s 空間限制 2g 題目描述 2018年10月,mit建立了最新的奈米科技研究中心mit.nano。此後,不斷有新的研究成果在此產生。有一天,研究者發現了一種新的生物,這種生物的基因中含有 條dna序列,每一條都有一定的長度,科學家們可以將每...
一道字串複製的面試題目
很多技術筆試都考字串複製函式的編寫 不能用那個庫函式 有人說說這個函式的考點在 和編寫的時候要注意的問題嗎?最好能有編寫嚴謹的例程。函式宣告 char strcpy char strdest,const char strsrc 目前為止,我總結出 1,考察strdest和strsrc非空 2,考察s...