Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章 CS340100, NTHU Yoshi.

Slides:



Advertisements
Similar presentations
1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
Advertisements

Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.
6-1 指標簡介 6-2 指標與陣列 6-3 動態配置記憶體 6-4 本章綜合練習
布林代數的應用--- 全及項(最小項)和全或項(最大項)展開式
Introduction to Java Programming Lecture 13 Classes I OO Programming.
第七章 抽樣與抽樣分配 蒐集統計資料最常見的方式是抽查。這 牽涉到兩個問題: 抽出的樣本是否具有代表性?是否能反應出母體的特徵?
: A-Sequence 星級 : ★★☆☆☆ 題組: Online-judge.uva.es PROBLEM SET Volume CIX 題號: Problem D : A-Sequence 解題者:薛祖淵 解題日期: 2006 年 2 月 21 日 題意:一開始先輸入一個.
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/3 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH3.5 ~ CH /10/31.
“Rule” By OX. By Check CREATE TABLE 員工薪資 ( 編號 int IDENTITY PRIMARY KEY, 薪資 smallmoney, CHECK ( 薪資 > 0 AND 薪資
3Com Switch 4500 切VLAN教學.
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
What is static?. Static? 靜態 ? class Test { static int staticX; int instanceX; public Test(int var1, int var2) { this.staticX = var1; this.instanceX =
自由進入及離開. 定義  長期 ─ 是指生產者能夠改變所有生產因素的情況。  自由進入及離開 ─ 是指公司能夠自由進入及離開市場而不受限 制。
1.1 線性方程式系統簡介 1.2 高斯消去法與高斯-喬登消去法 1.3 線性方程式系統的應用(-Skip-)
建立靜態資料成員 關鍵字: static 靜態資料成員不屬於特定物件,而是該類物件 所共同擁有的,可做為類別範圍裡的靜態變數。
第一章 變數、常數及資料型態. 變數 C 程式語言的變數名稱 第一個字必須是英文字母或底線 (_) 之後可以是數字, 英文字母或底線 (_) 不可以是保留字 例: Num (Ο) _score (Ο) C&C (X) 8num (X)
消費者物價指數反映生活成本。當消費者物價指數上升時,一般家庭需要花費更多的金錢才能維持相同的生活水準。經濟學家用物價膨脹(inflation)來描述一般物價持續上升的現象,而物價膨脹率(inflation rate)為物價水準的變動百分比。
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
5.1 Rn上之長度與點積 5.2 內積空間 5.3 單範正交基底:Gram-Schmidt過程 5.4 數學模型與最小平方分析
1 政大公企中心產業人才投資課程 -- 企業決策分析方法 -- 黃智聰 政大公企中心產業人才投資課程 課程名稱:企業決策分析方法 授課老師:黃智聰 授課內容:利用分公司之追蹤資料進行企業決策分析 參考書目: Hill, C. R., W. E. Griffiths, and G. G. Judge,
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
第 18 章 名稱空間與例外處理 18-1 名稱空間 18-1 名稱空間 18-2 例外處理 18-2 例外處理.
8.1 何謂高度平衡二元搜尋樹 8.2 高度平衡二元搜尋樹的加入 8.3 高度平衡二元搜尋樹的刪除
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
1 政治大學東亞所選修 -- 計量分析與中國大陸研究黃智聰 政治大學東亞所選修 課程名稱:計量分析與中國大陸研究 (量化分析) 授課老師:黃智聰 授課內容:時間序列與橫斷面資料的共用 參考書目: Hill, C. R., W. E. Griffiths, and G. G. Judge, (2001),
Monte Carlo Simulation Part.2 Metropolis Algorithm Dept. Phys. Tunghai Univ. Numerical Methods C. T. Shih.
2009fallStat_samplec.i.1 Chap10 Sampling distribution (review) 樣本必須是隨機樣本 (random sample) ,才能代表母體 Sample mean 是一隨機變數,隨著每一次抽出來的 樣本值不同,它的值也不同,但會有規律性 為了要知道估計的精確性,必需要知道樣本平均數.
Introduction to Java Programming Lecture 5: Using Java Classes : String & Math Spring 2009.
Introduction to Java Programming Lecture 15 Objects and Classes.
Chapter 13 塑模靜態觀點:物件圖 Static View : Object Diagram.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
: Tight words ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: : Tight Words 解題者:鐘緯駿、林一帆 解題日期: 2006 年 03 月 14 日 題意: 給定數字 k 與 n (0 ≦ k.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
: Problem A : MiniMice ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11411: Problem A : MiniMice 解題者:李重儀 解題日期: 2008 年 9 月 3 日 題意:簡單的說,題目中每一隻老鼠有一個編號.
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
資料結構實習-一 參數傳遞.
政治大學公企中心必修課-- 社會科學研究方法(量化分析)--黃智聰
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
資料結構實習-二.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
Density and control Reproduction curve 劉耀仁. Density :濃度、密度 ► 1 號區是 High-Density 區、 2 號是 Middle-density 區、 3 號區是 Low- Density 區。 ► 計算反射率( R )或透射率( T )
逆向選擇和市場失調. 定義  資料不對稱 在交易其中,其中一方較對方有多些資料。  逆向選擇 出現在這個情況下,就是當買賣雙方隨意在 市場上交易,與比較主動交易者作交易為佳 。
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
第 17 章 樣板 17-1 樣板的基礎 17-1 樣板的基礎 17-2 樣板函數 17-2 樣板函數 17-3 樣板類別 17-3 樣板類別 17-4 非型態參數的樣板類別 17-4 非型態參數的樣板類別 17-5 樣板類別的繼承 17-5 樣板類別的繼承 17-6 特化樣板與靜態成員 17-6 特化樣板與靜態成員.
Chapter 10 m-way 搜尋樹與B-Tree
What is Computer.
演算法課程 (Algorithms) 國立聯合大學 資訊管理學系 陳士杰老師 Course 7 貪婪法則 Greedy Approach.
JAVA 程式設計與資料結構 第十六章 Hash Tables. Introduction Hash Tables 結構為一個 Array ,稱之為 Bucket array 。 如果想要新增一個物件,要根據這個物件的特性 將其加入 Hash Table 內。 Bucket Array 用 A 來代替,其.
第五章 內積空間 5.1 Rn上之長度與點積 5.2 內積空間 5.3 單範正交基底:Gram-Schmidt過程
Extreme Discrete Summation ★★★★☆ 題組: Contest Archive with Online Judge 題號: Extreme Discrete Summation 解題者:蔡宗翰 解題日期: 2008 年 10 月 13 日.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
INTRODUCTION TO MATLAB SHAWNNTOU. What Is MATLAB? MATLAB® is a high-performance language for technical computing. MATLAB® is a high-performance language.
連續隨機變數 連續變數:時間、分數、重量、……
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
1 Introduction to Java Programming Lecture 3 Mathematical Operators Spring 2008.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
Microsoft Excel.
Introduction to Java Programming Lecture 16 Super and Sub Classes.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
:Problem E.Stone Game ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10165: Problem E.Stone Game 解題者:李濟宇 解題日期: 2006 年 3 月 26 日 題意: Jack 與 Jim.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
幼兒行為觀察與記錄 第八章 事件取樣法.
McGraw-Hill/Irwin © 2003 The McGraw-Hill Companies, Inc.,All Rights Reserved. 肆 資料分析與表達.
1 柱體與錐體 1. 找出柱體與錐體的規則 2. 柱體的命名與特性 3. 柱體的展開圖 4. 錐體的命名與特性 5. 錐體的展開圖
Presentation transcript:

Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章 CS340100, NTHU Yoshi

Outline Primitive and reference types Call by value/reference Wrapper classes Equality

In java, there are two types… Primitive types and Reference types 這兩種 Type 限制了 variable 所能握有 (hold) 的 value 種類

Recall that… heap objRef1=0x3200 objRef3=0x3288 objRef2=0x4650 (Object instances inside) intValue=3 booleanValue=true (Reference type variables) (Primitive type variables)

What is “value”? 所謂的 value 當然就是指 " 值 " ,也就是資料 的直接內容 – 但這個 ” 值 ” 所代表的涵意,如何解釋 ? 當 x = 3 是一個數值 (ex: int x = 3) 還是一個記憶體位置 (ex: 0x3000) – 取決於我們怎麼去解釋它,這就是 primitive types 與 reference types 的主要差異

Primitive types 譯為 ” 基本型別 ” – 這種型別的 value 被稱之為 primitive value – 這種 value 所代表的就是一個數量,一個大小, 或是一種純量,並不是用來代表其他任何東西 的 – There are 8 types which are primitive types byte, short, int, float, double, boolean, long, char

Reference types 譯為 ” 參考型別 ” – 這種型別的 value 被稱為 reference value – 這個 reference value 並非是實際上應用的東西, 它不是一個數量 – 它是一個參考 (object reference) ,一個用來 ” 指 向物件 ” 的參考 根據此 ”reference value” 來找到 heap 中的物件實體 但是 reference value 並不等於是物件 !! 由於 reference value 太長,很多人簡稱 ”reference” – 造成誤解,因為 C++ 中的 reference 與 java 中的 reference 定義 並不相同 !!

Type, variable, value 當 variable hold 的是 primitive value 時,我 們稱這個 variable 是 primitive type 的變數 反之 當 variable hold 的是 reference value 時, 我們稱這個 variable 是 reference type 的變 數 – 這句話是說 它是個 " 參考型別的變數 " ,而非 " 它是個參考 "

Example int i = 1; String str = "test"; 其中 i 跟 str 是 " 變數 “ “test” 是個字串的生成表示式,會生成 String 物件 1 是個整數的直譯字 (literal) int 跟 String 是 type 我們是看不到 value 的,他們是被 hold 在變數中的 平時我們說 ”str 物件 ” ,只是簡稱,正確應說 ”str reference value 所指向的物件 ”

所謂 call by value void m1 (Person p) { p = null; } //some other place Person personObj = new Person(“John”); m1(personObj); 把 personObj 中所存的 reference value ( 一個數值 ) ,當 做參數傳給 m1 在 m1 當中,把 p 變成 null ,並不會對實體物件有動作, 只是把 p 所儲存的值清掉 – 影響的範圍,只在 m1 中而已

Discussion Java 是 call by value 還是 call by reference – 對 primitive types 而言, call by value – 對 reference types 而言, call by “reference” value 其實也是 call by value ,只是這個 value 是記憶體位置的值 – 所以, java 只有 call by value ( 官方文件也是如此說 ) – 與 C 語言同理 逼免造成混亂,最好不要誤用 reference, alias 等名詞,因為在不同的程式語言有不同涵意

In C++ Primer "A reference is an Alias" – "Because a reference is just another name for the object to which it is bound, all operations on a reference are actually operations on the underlying object to which the reference is bound." – ( 此處 object 代表東西,不是我們一般 Java 認知的物 件 ) X = NULL ,你是把 X 裡頭的值變 NULL ,還是把 X 所指向的物件變成 NULL? – 問題的關鍵在於 ” 你到底在對誰動作 ”

所以我們正名 Reference 一詞,在 java 中為 ”reference value” 之簡稱,與 C++ 中完全無關 – Alias 等同於 reference (In C++) ,所以我們也不用 既然如此,我們就不用 C++ 的 call by reference, call by value 來解釋 Java – 逼免造成混亂 我們使用 Java Language Spec (JLS) 4.1 節中的 官方定義

Wrapper Classes There are eight classes named Integer, Long, Double, Float, Boolean, Short, Byte, Char, respectively What are the differences between the primitive types and them?

Let’s see the javadoc The Integer class wraps a value of the primitive type int in an object An object of type Integer contains a single field whose type is int. In addition, this class provides several methods for converting an int to a String and a String to an int, as well as other constants and methods useful when dealing with an int

References lang/Integer.html lang/Integer.html