java中沒有了c++中 & 這樣的引用符號,也沒像c#中那樣提供了out與ref 那么它是怎么做的呢
做什么事情都要去除例外的東西,String類就是此類問題的一個特殊情況
為什么特殊呢?
因?yàn)樗且粋€引用類型,確執(zhí)行的是值傳遞。這樣說有些抽象,還是舉個例子吧
值傳遞:
class Str
{
public static void main(String[] args)
{
int i = 900;
System.out.println(i);
changeInt(i);
System.out.println(i);
}
public static void changeInt(int s)
{
s = 34234;
}
}
結(jié)果:
900
900
這就是所謂的值傳遞。i把自己的副本給了函數(shù)changeInt的形參,而在changeInt中雖然將s賦值34234.但是對原來的i值并沒有影響,因?yàn)樗薷牡闹皇莍的copy品而已。
引用傳遞:
class Str
{
public static void main(String[] args)
{
Yinyong y = new Yinyong();
System.out.println(y.age);
changeObject(y);
System.out.println(y.age);
}
做什么事情都要去除例外的東西,String類就是此類問題的一個特殊情況
為什么特殊呢?
因?yàn)樗且粋€引用類型,確執(zhí)行的是值傳遞。這樣說有些抽象,還是舉個例子吧
值傳遞:
class Str
{
public static void main(String[] args)
{
int i = 900;
System.out.println(i);
changeInt(i);
System.out.println(i);
}
public static void changeInt(int s)
{
s = 34234;
}
}
結(jié)果:
900
900
這就是所謂的值傳遞。i把自己的副本給了函數(shù)changeInt的形參,而在changeInt中雖然將s賦值34234.但是對原來的i值并沒有影響,因?yàn)樗薷牡闹皇莍的copy品而已。
引用傳遞:
class Str
{
public static void main(String[] args)
{
Yinyong y = new Yinyong();
System.out.println(y.age);
changeObject(y);
System.out.println(y.age);
}