值類型與引用類型
此條目目前正依照其他維基百科上的內容進行翻譯。 (2021年1月15日) |
計算機編程中的數據類型可分為兩族:值類型(value type)與引用類型(reference type)。值類型的值就是實際值。引用類型的值是到其他值的引用[1][2]。
各種編程語言的分類
語言 | 值類型 | 引用類型 |
---|---|---|
C++[3] | 布爾值、字符、整數、浮點數、類(包括字符串、列表、映射、集合、堆棧、隊列)、枚舉 | 參考,指針 |
Java[4] | 布爾值、字符、整數、浮點數 | 數組、類(包括不可變字符串、列表、字典、集合、堆棧、隊列、枚舉)、接口、空指針 |
C#[5] | structures (including booleans, characters, integer numbers, floating-point numbers, fixed-point numbers, lists, dictionaries, sets, stacks, queues, optionals), enumerations | classes (including immutable strings, arrays, tuples, lists, dictionaries, sets, stacks, queues), interfaces, pointers |
Swift[6][7] | structures (including booleans, characters, integer numbers, floating-point numbers, fixed-point numbers, mutable strings, tuples, mutable arrays, mutable dictionaries, mutable sets), enumerations (including optionals), and user-defined structures and enumerations composing other value types. | functions, closures, classes |
Python[8] | classes (including immutable booleans, immutable integer numbers, immutable floating-point numbers, immutable complex numbers, immutable strings, byte strings, immutable byte strings, immutable tuples, immutable ranges, immutable memory views, lists, dictionaries, sets, immutable sets, null pointer) | |
JavaScript[9] | immutable booleans, immutable floating-point numbers, immutable integer numbers (bigint), immutable strings, immutable symbols, undefined, null | objects (including functions, arrays, typed arrays, sets, maps, weak sets and weak maps) |
OCaml[10][11] | immutable characters, immutable integer numbers, immutable floating-point numbers, immutable tuples, immutable enumerations (including immutable units, immutable booleans, immutable lists, immutable optionals), immutable exceptions, immutable formatting strings | arrays, immutable strings, byte strings, dictionaries (including pointers) |
裝箱和拆箱(boxing and unboxing)
區分值類型與引用類型的語言,典型包括了裝箱機制。即把一些甚至全部值類型包為引用類型。這使得值類型可用在需要引用類型的場合。逆過程稱為拆箱。
參見
參考文獻
- ^ Brown, Erik E. Windows Forms in Action. Shelter Island, New York: Manning. 2006: 703. ISBN 978-1-932-39465-8.
- ^ Stephens, Rod. C# 5.0 Programmer's Reference. Indianapolis, Indiana: John Wiley & Sons. 2014: 57. ISBN 978-1-118-84728-2.
- ^ Type - cppreference.com. en.cppreference.com. [2021-01-08]. (原始內容存檔於2020-11-13).
- ^ Chapter 4. Types, Values, and Variables. docs.oracle.com. [2021-01-08]. (原始內容存檔於2020-08-29).
- ^ C# Keywords. docs.microsoft.com. [2021-01-08]. (原始內容存檔於2020-11-26).
- ^ Structures and Classes — The Swift Programming Language (Swift 5.2). docs.swift.org. [2021-01-08]. (原始內容存檔於2020-12-11).
- ^ Closures — The Swift Programming Language (Swift 5.2). docs.swift.org. [2021-01-08]. (原始內容存檔於2021-02-06).
- ^ Built-in Types — Python 3.8.2rc1 documentation. docs.python.org. [2021-01-08]. (原始內容存檔於2020-06-14).
- ^ ECMAScript® 2019 Language Specification. www.ecma-international.org. [2021-01-08]. (原始內容存檔於2021-01-13).
- ^ Chapter 24 The core library. caml.inria.fr. [2021-01-08]. (原始內容存檔於2020-07-02).
- ^ Modifiable Data Structures. caml.inria.fr. [2021-01-08]. (原始內容存檔於2020-07-22).