黑马程序员-------.net基础知识二
变量
变量代表着一块内存空间,我们可以通过变量名称想内存存/取数据,有变量就不需要我们记忆复杂的内存地址。
向内存中申请一块内存空间的语法: 数据类型 变量名;
|
变量类型 |
存储位置 |
自动初始化 |
用途 |
|
本地变量 |
栈或者栈和堆 |
否 |
用于函数成员内部的本地计算 |
|
类字段 |
堆 |
是 |
类的成员 |
|
结构字段 |
堆或栈 |
是 |
结构的成员 |
|
参数 |
栈 |
否 |
用于把值传入或者传出方法 |
|
数组元素 |
堆 |
是 |
数组的成员 |
多重变量声明:可以把多个变量声明在一条单独的声明语句中。
注:多重变量声明中的变量必须类型相同,变量名必须用逗号分隔,可以在变量名后包含初始化语句。
- <span style="color:#000000;"> static void Main(string[] args)
- {
- //声明一些变量,有的被初始化,有的没被初始化。
- int a = 8, b, c = 7;
- double d, f = 3.14;
- int g ,float h; //错误,多重变量声明类型必须相同!
- }</span>
关于变量的数据类型:
|
C# 类型 |
.Net 框架类型 |
有无符号 |
占据位数 |
取值范围 |
|
sbyte |
System.Sbyte |
是 |
1 |
-128 到 127 |
|
short |
System.Int16 |
是 |
2 |
-32768 到32767 |
|
int |
System.Int32 |
是 |
4 |
-2147483648 到 2147483647 |
|
long |
System.Int64 |
是 |
8 |
-9223372036854775808 到 9223372036854775807 |
|
byte |
System.Byte |
否 |
1 |
0 到 255 |
|
ushort |
System.Uint16 |
否 |
2 |
0 到 65535 |
|
uint |
System.UInt32 |
否 |
4 |
0 到 4294967295 |
|
ulong |
System.Uint64 |
否 |
8 |
0 到18446744073709551615 |
|
float |
System.Single |
是 |
4 |
可能值从 ±1.5 x 10-45 到 ±3.4 x 1038,小数点后7位有效数字 |
|
double |
System.Double |
是 |
8 |
可能值从 ±5.0 x 10-324 to ±1.7 x 10308小数点后15到16位有效数字 |
|
decimal |
System.Decimal |
是 |
12 |
可能值从 ±1.0 x 10-28 到±7.9 x 1028小数点后28到29位有效数字 |
|
char |
System.Char |
N/A |
2 |
任何16位Unicode字符 |
|
bool |
System.Boolean |
N/A |
1 / 2 |
true 或者false |
在C#当中,分为两种数据类型,值类型与引用类型.
值类型,表示实际数据,只是将值存放在内存中,值类型都存储在堆栈中,包括:
简单类型:int,char,float,double,bool等,还有结构及枚举.
引用类型,表示指向数据的指针或引用,包含内存堆中对象的地址,为 null时则表示未引用任何对象,包括:类,接口,数组,字符串,委托,Object.
有两种引用类型在C#中受到了特别的重视,它们的C#别名和预定义值类型的C#别名很相像。第一种是Object类(C#别名是object, o小写)。这是所有值类型和引用类型的最终基类。因为所有的类型派生自Object,所以可以把任何类型转换为Object类型,甚至值类型也可以转换。所有的值类型都派生自引用类型。第二种是String类。字符串代表一个固定不变的Unicode字符序列。字符串在很多方面都像值类型,而不像引用类型。
"+"在C#中有两种意义:
⒈是数学中的加法运算:两边参与假发运算的数据类型为数字类型,则"+"表示数学上的加法运算的意义。
⒉是连接的意思:两边参与加号运算的数据,有一个是字符类型,那么个"+"号就是连接的意义。
在Console.WriteLine("")中,第一个变量/字符串中可以使用占位符。占位符由{数字}组成,数字由0开始编号。
第一个站位符:{0}
第二个占位符:{1}
第三个占位符:{2}
···
Console.WriteLine();有多个参数时,输出都是第一个参数中的内容,从第二个参数开始,都是用来替换第一个参数中的站位符的值,所以从第二个参数开始,要不要输出,就要看第一个参数中有没有相关的占位符。
类型自动转换规则
参与运算(算术运算和赋值运算)的操作数和结果类型必须一致。当不一致时,满足下面条件,系统自动完成类型转换
⒈两种类型兼容 例如: int和double兼容
⒉目标类型大于源类型 例如:double>int
对于表达式:如果一个操作数为double类型,则整个表达式可提升double型。
强制类型转换
语法:(数据类型)待转换的值;
例如:
- {
- int b = (int)3.14;
- }
⒈ 浮点数会做无条件舍去,失去精确度
⒉ 可处理 object 转 int,但遇到 object 为 null 时会产生 error
⒊ 某些情况下,如 object 转型成 int,有时正常,但有时会无故发生 error,原因不明
⒋ 无法处理 string 转 int (程序中常会用到的功能)
⒌ 千万不可用来处理 char 类型,否则传回的是 ASCII 码,而不是字面上的数字
转义字符
c#中的转义字符:
\n ------------------------- 换行符
\r ------------------------- 回车符
\t ------------------------- 水平制表符
\b ------------------------- 退格符
\f ------------------------- 换页符
\0 ------------------------- 空字符
\" ------------------------- 双引号
\'''' -------------------------单引号
\\ -------------------------反斜杠
\a -------------------------警告
还有一个较特殊的,就是@号,只要语句前加@号,即表示@号后面的包括有转义符的都按不进行转义运算。
例如:
- string b1 = "It started,\"Four score and senven...\"";
- string b2 = @"It started,""Four score and senven...""";//<span style="color:#006600;">如果想继续在@后的句中表示双引号,那么两个双引号就代表一个双引号。</span>
黑马程序员-------.net基础知识二的更多相关文章
- 黑马程序员-------.net基础知识一
一 初识.net .net是一种多语言的编程平台,可以用多达几十种的语言来进行开发,而C#就是基于.net平台的其中一种开发语言. 它的特点是: ⒈多平台:该系统可以在广泛的计算机上运行,包括从服务 ...
- 黑马程序员_JAVA基础知识总结3
------- android培训.java培训.期待与您交流! ---------- Java源文件的扩展名是.java,编译之后生成.class的文件.所有的类都有一个共同的继承祖先Object类 ...
- 黑马程序员_JAVA基础知识总结2
------- android培训.java培训.期待与您交流! ---------- IDE ---> Itegrity Development Environment Java EE --- ...
- 黑马程序员-------.net基础知识四
常量(静态常量------compile-time) 语法:const 类型 常量名 =常量值: 例: [csharp] view plaincopyprint? { const double PI= ...
- 黑马程序员-------.net基础知识三
条件执行语句 if 语句 语法: [csharp] view plaincopyprint? if(条件) { 语句1;语句2:语句3: ··· } 执行过程: 先判断条件是否为true ,如果为tr ...
- 黑马程序员-------.net基础知识五
方法(函数) 作用:用来重复代码,当我们在一个过程中反复的写了同样的代码,一般情况下,我们就可以把需要重复写的代码定义在方法中,用的时候只需调用即可 语法: [访问修饰符][static] 返回值类型 ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- 黑马程序员+Winform基础(上)
黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...
- 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)
正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G QQ 1481135711 这是我总 ...
随机推荐
- Wpf OpenFileDialog
Microsoft.Win32.OpenFileDialog openFileDialog1 = new Microsoft.Win32.OpenFileDialo ...
- JFinalo操作框架racle数据库
JFinal操作框架oracle数据库.在需求configPlugin()方法来配置链路oracle配置数据库 组态JFinal数据库操作窗口小部件,configPlugin方法 在这里,我打开jdb ...
- BLE 广播数据解析
从上一篇GATT Profile 简介中提到过,BLE 设备工作的第一步就是向外广播数据.广播数据中带有设备相关的信息.本文主要说一下 BLE 的广播中的数据的规范以及广播包的解析. 广播模式 BLE ...
- yum在线升级
RPM优点 由於 RPM 是透过预先编译并打包成为 RPM 文件格式后,再加以安装的一种方式,并且还能够进行数据库的记载. 所以 RPM 有以下的优点: RPM 内含已经编译过的程序与配置档等数据,可 ...
- Android和Java的轻巧Wire协议缓冲器
Wire协议缓冲器 一个人必须有一个代码! -奥马尔小 由于我们的团队和项目增长,数据的种类和数量也随之增加. 成功将您简单的数据模型转换为复杂的! 无论您的应用程序将数据存储到磁盘或网络传送信号,该 ...
- Smokeping 监控部署及配置
安装参见: https://github.com/oetiker/SmokePing/blob/master/doc/smokeping_install.pod 1 Smokeping *** Gen ...
- log4j中存在日志无法打印问题解决
我在项目中配置双数据中心,原来类包名称前最都是一致的,后来由于项目的需要根据数据来源命名不同的类包名称,这个导致一个问题,sql语句运行无法正常打印出来,提示以下内容: log4j:WARN No a ...
- mysql 备份还原数据库
备份和还原都在bin目录下操作 1.备份 mysqldump -u 用户名 -p 密码 --default-character-set=utf8 数据库名称 >d:/temp.sql 2.还 ...
- 读取group by 之外的字段
序号 姓名 性别 身高 1 张三 男 185 2 李四 女 161 3 王五 女 166 4 赵六 男 178 1.获取男生女生人数 select count(性别) , 性别 from 表名 ...
- 点击按钮弹出一个div层
JQuery弹出层,点击按钮后弹出遮罩层,还有关闭按钮 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml& ...