基本型別和引用型別作為引數傳遞(重要)
基本型別和引用型別作為引數傳遞
引用型別資料和基本型別資料作為引數傳遞有沒有差別呢?我們用如下程式碼進行說明,並配合圖解讓大家更加清晰
1.基本資料型別傳遞
基本型別作為引數傳遞時,其實就是將基本型別變數x空間中的值複製了一份傳遞給呼叫的方法show(),當在show()方法中x接受到了複製的值,再在show()方法中對x變數進行操作,這時只會影響到show中的x。當show方法執行完成,彈棧後,程式又回到main方法執行,main方法中的x值還是原來的值。
2.引用資料型別傳遞
當引用變數作為引數傳遞時,這時其實是將引用變數空間中的記憶體地址(引用)複製了一份傳遞給了show方法的d引用變數。這時會有兩個引用同時指向堆中的同一個物件。
當執行show方法中的d.x=6時,會根據d所持有的引用找到堆中的物件,並將其x屬性的值改為6.show方法彈棧。
由於是兩個引用指向同一個物件,不管是哪一個引用改變了引用的所指向的物件的中的值,其他引用再次使用都是改變後的值。
相關推薦
基本型別和引用型別作為引數傳遞(重要)
基本型別和引用型別作為引數傳遞 引用型別資料和基本型別資料作為引數傳遞有沒有差別呢?我們用如下程式碼進行說明,並配合圖解讓大家更加清晰 1.基本資料型別傳遞 基本型別作為引數傳遞時,其實就是將基本型別變數x空間中的值複製了一份傳遞給呼叫的方法show(),當在show()方法中
java面向物件(類與物件,區域性變數成員變數,基本型別和引用型別作為引數傳遞)
一.類和物件的區別 類是對某一類事物的抽象描述,而物件用於表示現實中該類事物的個體 可以將玩具模型看作是一個類,將一個個玩具看作物件,從玩具模型和玩具之間的關係便可以看出類與物件之間的關係。類用於描述多個物件的共同特徵,它是物件的模板。物件用於描述現實中的個體,它是類的例項 二.區域性變數和成員變數
[10]基本型別和引用型別的引數傳遞(圖)
前言:主要為個人筆記 基本型別 程式碼: class Demo{ public static void main(String[] args){ int x=4;
java中,方法引數是基本型別和引用型別的區別
方法引數是基本型別時,傳遞的是值。 方法引數是引用型別時,傳遞的是記憶體地址值 當引數是基本型別時,在呼叫方法時將值傳遞到方法中,執行方法,執行結束方法退出,對原本main中定義的變數沒有任何操作(方法中沒有return)。即:此時只跟棧有關係,方法執行完之後(方法中沒有return),會彈棧。
C#中值型別和引用型別引數傳遞
原則:儘可能控制對資料的修改,如果可以預測某個資料不會或不應該被改變,就要對其控制,而不要期望使用這個資料的呼叫者不會改變其值。 如果引數在使用過程中被意外修改,將會帶來不可預知的結果,而且這種錯誤很難被檢查到,所以我們在設計方法引數的時候,要充分考慮傳遞引用型別引數或者引用方式傳遞引用型別
C#值型別和引用型別的引數傳遞(ref,out)
C#中有兩種型別,值型別,和引用型別。在記憶體中值型別是直接儲存在記憶體的棧中的,引用型別在棧中存放一個地址,這個地址指向堆中的資料(引用型別的資料是存放在堆中的)下面我們來看看兩種型別引數傳遞有什麼區別先看一個例子 /// <summary> ///
基本型別和引用型別區別和指向問題
基本型別: null, undefined, string, boolean, number (存放在棧記憶體中) 引用型別: array, object (存放在堆記憶體中) 1. 基本型別指標問題 var a=2; var b=a; b=3; console.log(a);//
JS中基本型別和引用型別分別指的的是什麼?有何區別?
這裡是修真院前端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴充套件思考】【更多討論】【參考文獻】 八個方面深度解析前端知識/技能,本篇分享的是: 【JS中基本型別和引用型別分別指的的是什麼?有何區別? 】 1.背
JS中基本資料型別和引用型別最根本的區別
前言 JS中的型別只有6種,其中基本資料型別有5種分別為string,number,boolen,null,undefined,引用型別有一種,就是object,object是一個大的綜合體,在JS中除了那5個基本資料型別以外,其他的一切皆物件。 正文 兩個對比的例
java基本資料型別和引用型別以及他們的儲存方式
1、基本資料型別: byte 8位 short 16 位 int 32 位 long 64位 float 32位 double 64位 2、基本資料型別和引用資料型別的儲存位置: java中的基本資料型別是儲存在棧中還是儲存在堆中取決於基本型別
js中的基本型別和引用型別
基本資料型別:按值訪問,可操作儲存在變數中的實際的值。基本型別值指的是簡單的資料段。 基本資料型別有這五種:Undefined、Null、String、Number、Boolean。 引用型別:當複製儲存著物件的某個變數時,操作的是物件的引用,但在為物件新增屬性時,操
資料型別分為基本型別和引用型別
基本型別為:number,string,boolean, undefined , null 引用型別為:Date,Function , Array, Object,正則表示式,核心是Object和Function 一、number
基本型別和引用型別比較的坑
java數值型別分為基本型別和引用型別,這裡以int和Integer型別為例,分析一下在開發過程中遇到的坑並給出瞭如何規避的方案, 在很多開發場景中我們一般會將入參設定為引用型別譬如Integer,在方法內部可能會出現比較情況,譬如一個代表order_type的欄位
JS的變數型別:基本型別和引用型別
基本資料型別:按值訪問,可操作儲存在變數中的實際的值。基本型別值指的是簡單的資料段。基本資料型別有這五種:Undefined、Null、String、Number、Boolean。引用型別:當複製儲存著物件的某個變數時,操作的是物件的引用,但在為物件新增屬性時,操作的是實際的
基本型別和引用型別區別
1.基本型別和引用型別在記憶體中的儲存 Java中資料型別分為兩大類,基本型別和物件型別。相應的,變數也有兩種型別:基本型別和引用型別。 基本型別的變數儲存原始值,即它代表的值就是數值本身; 而引用型別的變數儲存引用值,"引用值"指向記憶體空間的地址,代表了某個物件的引用,
javascript的資料型別之基本型別和引用型別
不知道在初學js的同學對下面的程式碼有沒有疑惑:var a = [1,2,3]; var b = a; b.push(4); console.log(a); // [1,2,3,4]var c = 1; var d = c; d =2; console.log(c); //
記憶體探尋1之——值型別和引用型別的記憶體分配機制
String物件和值型別的記憶體分配機制: 同樣由前延伸,上上篇《由String型別分析,所產生的對引數傳遞之惑的解答》中,最後提及,如果將引用型別的按值傳遞和按引用傳遞,用託管堆表
PHP變數的值型別和引用型別
PHP 變數在記憶體中儲存的並不直接是值的內容而是值的地址。比如: $a = 1; 從表面上看起來似乎是 $a 直接儲存了 1 這個值。但是實際情況是,PHP 直譯器建立了變數 $a , 將值 1 存入記憶體中的某個地方,再將值的地址存到變數中。 需要取值時,先找到變數中 $a 的地址,再根
js中值型別和引用型別的區別(無舉例)
js中的變數型別有哪些? (1)值型別:字串string、數值number、布林值boolean、undefined (2)引用型別:物件object、陣列array、函式function 值型別和引用型別的區別 (1)值型別: 1⃣️佔用空間固定,儲存在棧中(當一個方法
值型別 和 引用型別
值型別 /** 值型別**/ // number 型別 var a = 100 var b = a a = 200 console.log(b) //100 // string 型別 var s