Java引用和js引用都是編程中非常重要的概念。下面分別從Java和js兩個角度來看看引用這個概念。
Java中的引用是指對某個對象的引用,也就是說引用保存的是對象的地址。Java中所有的變量(除了基本數據類型)都是引用類型,包括類、接口、數組等。而在Java中,被引用的對象會一直存在于堆內存中,直到沒有引用指向它時才會被垃圾回收機制回收。因此Java中的引用很重要,不僅是變量間數據傳輸的方式,也是判斷對象生命周期的重要依據。
Person person1 = new Person();
Person person2 = person1; // person2引用了person1
person1.setName("張三");
System.out.println(person2.getName()); // 輸出為“張三”
js中的引用則與Java有些不同。js中的引用可以是一個對象、一個數組、一個函數等。而js中的變量都是對象的引用,并且是自動類型的,即什么類型的值賦給變量就會成為什么類型的引用。和Java類似,js中的引用保存的也是對象在內存中的地址。一個對象可以擁有多個引用,也就是說js中的引用可以相互交叉引用形成鏈式結構,這種鏈式結構稱之為對象圖。在js中,對象圖和強引用是導致內存泄漏的主要原因,因此合理使用引用是十分重要的。
let person1 = {name: "張三", age: 20};
let person2 = person1; // person2引用了person1
person1.age = 25;
console.log(person2.age); // 輸出為25
Java和js中的引用雖然有些細微差別,但其本質上還是相通的:引用保存的是對象在內存中的地址,是判斷對象生命周期的重要依據。