CShard入门005-详解变量

—-刘铁猛《C#语言入门详解》

变量


什么是变量?

变量:以变量名所对应的内存地址为起点,以其数据类型所要求的存储空间为长度的一块内存区域(变量中存储的是值类型的值,或者引用类型的地址)。
通俗理解,变量:用来标识一块内存区域,即变量就是一块内存区域。变量名:是一个标识符,用来指代一块内存区域。变量名表示变量的值在内存中的存储位置。

变量主要分为七种:

静态变量

静态变量属于类,而不是类的特定实例。
静态变量在类加载时被初始化,只有一份存储空间,所有类的实例共享同一份静态变量。
静态变量使用static关键字声明,在内存中存储在静态存储区域。
可以通过类名直接访问静态变量,无需实例化对象。
通常用于存储类级别的信息,如常量、计数器等。

实例变量(成员变量,字段)

实例变量属于类的实例(对象),每个对象都有自己的实例变量副本。
实例变量在创建对象时被分配内存空间,并随着对象的销毁而释放。
实例变量不使用static关键字声明,每个对象都有自己的实例变量。
必须通过对象实例来访问实例变量。

数组元素

数组是一种数据结构,用于存储相同类型的多个元素。具体可看数据结构一栏。

值参数

值参数是一种参数传递方式,将参数的值传递给方法。
对值的修改不会影响到原始值。

引用参数

将方法里中的参数的值输出(参数前加上 out 关键字)

局部变量

局部变量是在方法、构造函数或代码块内部声明的变量,只在声明的作用域内有效。局部变量在声明时必须初始化,可以在声明时或稍后赋值

变量的声明

有效的修饰符组合(可选) + 类型 + 变量名 + 初始化器(可选)

值类型变量和引用类型变量

值类型变量
值类型没有实例。不需要new操作。
在内存分配的时候会根据该类型所需的空间来分配字节(根据类型实际大小)。
引用类型变量
引用本质是指针
引用类型需要实例化。
引用类型在内存分配的时候会跟据电脑系统的位数来分配(32对应4字节,64对应8字节)。
引用类型变量存储的数据是对象的地址。

Tip :引用类型对象的数据部分始终存放在堆里。值类型对象可存放在栈里,也可以在堆里。
当变量为静态变量时,引用类型的引用和基本类型的值存储在方法区里。
当变量为成员变量时,引用类型的引用和基本类型的值存储在堆里。
当变量为局部量时,引用类型的引用和基本类型的值存储在栈里。

装箱和拆箱

装箱:把栈上的值类型转成堆上的引用类型。操作:先copy值类型到堆上面,然后在存储该地址的地址,而不是直接copy值类型(深拷贝)。
拆箱:引用类型转成值类型。操作:根据引用类型找到堆上的值类型,copy堆上的值类型到栈上。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇