引用傳值
引用傳遞彌補了值傳遞的不足,如果傳遞的數(shù)據(jù)量很大,直接復過去的話,會占用大量的內(nèi)存空間,而引用傳遞就是將對象的地址值傳遞過去,函數(shù)接收的是原始值的首地址值。在方法的執(zhí)行過程中,形參和實參的內(nèi)容相同,指向同一塊內(nèi)存地址,也就是說操作的其實都是源數(shù)據(jù),所以方法的執(zhí)行將會影響到實際對象。
引用類型常見的引用類型:類類型,接口類型和數(shù)組。
public class PassingByReference {
static class Entity{
int key;
String value;
@Override
public String toString() {
return "Entity{" +
"key=" + key +
", value='" + value + '\'' +
'}';
}
}
private static void demo(Entity e) {
Entity demo = e;
demo.key = 1;
demo.value = "end";
System.out.println("參數(shù)的對象:"+ e.toString());
System.out.println("demo:"+ demo.toString());
}
public static void main(String[] args) {
Entity entity = new Entity();
entity.key = 0;
entity.value = "start";
System.out.println("開始時的對象entity:" +entity.toString());
demo(entity);
System.out.println("結束時的對象entity:" +entity.toString());
}
}
運行結果:
?開始時的對象entity:Entity{key=0, value='start'}
?參數(shù)的對象:Entity{key=1, value='end'}
?demo:Entity{key=1, value='end'}
?結束時的對象entity:Entity{key=1, value='end'}