為什么Java中int小寫String大寫,?Java沒有string,?在c#中為什么又會有String和string,? 思索了很久,在百度和谷歌中也搜了很久,,MSDN中也查閱了一下,,但這個問題始終還是困擾著我。 首先針對Java中int小寫String大寫的問題,,網(wǎng)上是這樣說的,。int是關(guān)鍵字,而String是類,,所有的關(guān)鍵字都是小寫,,至此我又產(chǎn)生了一個問題。字符串類型和其他類型區(qū)別在哪,?也就是說String和short,、byte等類型的區(qū)別在哪,?我越來越混沌名單,,但好像也越來越清晰對他們的看法,。 為什么c#中String和string都可以聲明字符串,?而Java中只用String來聲明呢,?這也就是說為什么Java中聲明字符串不是像聲明整型那樣用關(guān)鍵字來定義呢? 下面是粘貼來的: String和string的區(qū)別 從位置講:
從性質(zhì)講: 1. 2. 3. string詳解:
string s = "";一個指向"\0"的空字符串, 占用一個字節(jié)存儲空間,因為轉(zhuǎn)義符\0代表字符串結(jié)束.s變量可以使用,比如s.Length string s = null; 一個指不向任何一個存儲空間的變量,s不可以使用 單個字符分割: string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 輸出下面的結(jié)果: ab deab deab de 多個字符分割: string s="abcdeabcdeabcde string[] sArray1=s.Split(new char[3]{'c','d','e'}); foreach(string i in sArray1) Console.WriteLine(i.ToString()); 可以輸出下面的結(jié)果: ab ab ab 多個字符分割(正則表達式): string content="agcsmallmacsmallgggsmall string[]resultString=Regex.Split(content,"small",RegexOptions.IgnoreCase) foreach(string i in resultString) Console.WriteLine(i.ToString()); 輸出下面的結(jié)果:agc mac ggg ytx 0. 1.
C#到底是什么時候傳引用?什么時候傳值,?
傳值的情況?。篠truct、Enumeration,、Numeric(Integral/Floating/decimal),、bool 傳引用的情況:class、Delegate,、Interface 當(dāng)使用操作符"="以及函數(shù)傳參數(shù)的時候: 有人說,,我硬要把值當(dāng)引用傳怎么辦,?
a、用ref關(guān)鍵字
b,、用數(shù)組,,數(shù)組是class
c、涼拌:)
2. String傳值還是傳引用 C#的String聲明是class String,,當(dāng)然是傳引用,。 不過,之所以有這個疑惑,,多數(shù)是因為這個情況:
string a = "aaa";
string b = a;
b = "bbb";
或者是這么幾行代碼:
public void Swap(string s1, string
s2)
{
}
這時候結(jié)果一打印,,結(jié)果發(fā)現(xiàn)a的值還沒有變,Swap也沒有成功,,這時候就會有幻覺:是不是沒有傳引用?。?/font>
呵呵,,string不會這么粗暴的打亂“聲明為class就是傳引用”這種規(guī)則的,。
分析一下:
string a =
"aaa";
string b =
a;
b =
"bbb";
Swap函數(shù)也是這樣,,比如說傳了a, b進去(a="aaa",
b="bbb"),
結(jié)果是,,s1和s2確實是Swap了,,但是這種結(jié)果并不會影響到a和b
3. string和String有什么區(qū)別? MSDN中對string的說明:string is an
alias for String in the .NET
Framework
呵呵string是String的別名而已,,都是一家,。
4. String為什么是Immutable,怎么實現(xiàn)的,? immutable:對象一旦生成不可改變 關(guān)于怎么實現(xiàn)的,,在明白了問題2之后很好辦,只要不提供任何修改自己成員變量的方法就可以了,。順便聲明為sealed,,防止不清楚的后來者違反規(guī)定:)
String每個看似修改了成員變量的方法,事實上都返回了一個新的String,。
比如String.Replace函數(shù),,事實上并沒有改變原來的串,這也是為什么只有讓str =
str.Replace( foo,
bar )才真正完成替換的原因,。
看來正有一天真正的把Java和C#區(qū)別開來的時候,,就明白其中的道理了。 為什么Java中int小寫String大寫,?Java沒有string,?在c#中為什么又會有String和string? 思索了很久,,在百度和谷歌中也搜了很久,,MSDN中也查閱了一下,但這個問題始終還是困擾著我,。 首先針對Java中int小寫String大寫的問題,,網(wǎng)上是這樣說的。int是關(guān)鍵字,,而String是類,,所有的關(guān)鍵字都是小寫,至此我又產(chǎn)生了一個問題,。字符串類型和其他類型區(qū)別在哪,?也就是說String和short、byte等類型的區(qū)別在哪,?我越來越混沌名單,,但好像也越來越清晰對他們的看法。 為什么c#中String和string都可以聲明字符串,?而Java中只用String來聲明呢,?這也就是說為什么Java中聲明字符串不是像聲明整型那樣用關(guān)鍵字來定義呢,? 下面是粘貼來的: String和string的區(qū)別 從位置講:
從性質(zhì)講: 1. 2. 3. string詳解:
string s = "";一個指向"\0"的空字符串, 占用一個字節(jié)存儲空間,因為轉(zhuǎn)義符\0代表字符串結(jié)束.s變量可以使用,比如s.Length string s = null; 一個指不向任何一個存儲空間的變量,s不可以使用 單個字符分割: string s="abcdeabcdeabcde"; string[] sArray=s.Split('c'); foreach(string i in sArray) Console.WriteLine(i.ToString()); 輸出下面的結(jié)果: ab deab deab de 多個字符分割: string s="abcdeabcdeabcde string[] sArray1=s.Split(new char[3]{'c','d','e'}); foreach(string i in sArray1) Console.WriteLine(i.ToString()); 可以輸出下面的結(jié)果: ab ab ab 多個字符分割(正則表達式): string content="agcsmallmacsmallgggsmall string[]resultString=Regex.Split(content,"small",RegexOptions.IgnoreCase) foreach(string i in resultString) Console.WriteLine(i.ToString()); 輸出下面的結(jié)果:agc mac ggg ytx 0. 1.
C#到底是什么時候傳引用,?什么時候傳值?
傳值的情況?。篠truct,、Enumeration、Numeric(Integral/Floating/decimal),、bool 傳引用的情況:class,、Delegate、Interface 當(dāng)使用操作符"="以及函數(shù)傳參數(shù)的時候: 有人說,,我硬要把值當(dāng)引用傳怎么辦,?
a,、用ref關(guān)鍵字
b、用數(shù)組,,數(shù)組是class
c,、涼拌:)
2. String傳值還是傳引用 C#的String聲明是class String,當(dāng)然是傳引用,。 不過,,之所以有這個疑惑,多數(shù)是因為這個情況:
string a = "aaa";
string b = a;
b = "bbb";
或者是這么幾行代碼:
public void Swap(string s1, string
s2)
{
}
這時候結(jié)果一打印,,結(jié)果發(fā)現(xiàn)a的值還沒有變,,Swap也沒有成功,這時候就會有幻覺:是不是沒有傳引用???
呵呵,string不會這么粗暴的打亂“聲明為class就是傳引用”這種規(guī)則的,。
分析一下:
string a =
"aaa";
string b =
a;
b =
"bbb";
Swap函數(shù)也是這樣,,比如說傳了a, b進去(a="aaa",
b="bbb"),
結(jié)果是,,s1和s2確實是Swap了,,但是這種結(jié)果并不會影響到a和b
3. string和String有什么區(qū)別? MSDN中對string的說明:string is an
alias for String in the .NET
Framework
呵呵string是String的別名而已,,都是一家,。
4. String為什么是Immutable,怎么實現(xiàn)的,? immutable:對象一旦生成不可改變 關(guān)于怎么實現(xiàn)的,,在明白了問題2之后很好辦,只要不提供任何修改自己成員變量的方法就可以了,。順便聲明為sealed,,防止不清楚的后來者違反規(guī)定:)
String每個看似修改了成員變量的方法,事實上都返回了一個新的String,。
比如String.Replace函數(shù),,事實上并沒有改變原來的串,這也是為什么只有讓str =
str.Replace( foo,
bar )才真正完成替換的原因,。
看來正有一天真正的把Java和C#區(qū)別開來的時候,,就明白其中的道理了。 |
|