欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java的值傳遞和

Java中的傳遞方式有值傳遞和引用傳遞兩種方式。值傳遞,是指在方法調(diào)用的時(shí)候,將實(shí)參的值復(fù)制一份給形參,形參在方法中進(jìn)行操作,不會(huì)影響到原始的實(shí)參。Java中的數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,基本數(shù)據(jù)類型都是值傳遞方式,而引用數(shù)據(jù)類型則需要更復(fù)雜的規(guī)則。

public class Test {
public static void main(String[] args){
int a = 10;
int b = 20;
swap(a,b);
System.out.println("a="+a+",b="+b);
}
public static void swap(int m, int n){
int temp = m;
m = n;
n = temp;
}
}

在上述代碼中,通過swap方法嘗試交換a和b兩個(gè)變量的值。運(yùn)行代碼后輸出結(jié)果會(huì)發(fā)現(xiàn),a和b的值并沒有發(fā)生改變,原因是swap方法中的m和n是基本數(shù)據(jù)類型的形參,形參在方法中進(jìn)行操作,不會(huì)影響到原始的實(shí)參。

而對(duì)于引用數(shù)據(jù)類型,假設(shè)有以下代碼:

public class Test {
public static void main(String[] args){
StringBuilder str = new StringBuilder("Hello");
changeValue(str);
System.out.println(str);
}
public static void changeValue(StringBuilder stringBuilder){
stringBuilder.append(", world!");
}
}

在這段代碼中,我們定義了一個(gè)StringBuilder對(duì)象str,并通過changeValue方法來更改str對(duì)象中的值。由于StringBuilder屬于引用數(shù)據(jù)類型,因此變量str在傳遞給changeValue方法時(shí),會(huì)將str對(duì)象的引用傳遞給方法中的stringBuilder。在changeValue方法中,我們對(duì)stringBuilder進(jìn)行了append操作,此時(shí)str對(duì)象中的值也發(fā)生了改變。

從上述例子可以看出,Java中的值傳遞只是將實(shí)參的值復(fù)制一份給形參,在方法中進(jìn)行操作不會(huì)影響到原始的實(shí)參。但當(dāng)涉及到引用數(shù)據(jù)類型時(shí),由于引用的傳遞方式不同于值的傳遞方式,因此在方法中更改引用所指向的對(duì)象的值會(huì)影響到原始的實(shí)參。