黑马程序员-------.net基础知识二
2013-10-10 16:54
197 查看
变量
变量代表着一块内存空间,我们可以通过变量名称想内存存/取数据,有变量就不需要我们记忆复杂的内存地址。向内存中申请一块内存空间的语法: 数据类型 变量名;
变量类型 | 存储位置 | 自动初始化 | 用途 |
本地变量 | 栈或者栈和堆 | 否 | 用于函数成员内部的本地计算 |
类字段 | 堆 | 是 | 类的成员 |
结构字段 | 堆或栈 | 是 | 结构的成员 |
参数 | 栈 | 否 | 用于把值传入或者传出方法 |
数组元素 | 堆 | 是 | 数组的成员 |
注:多重变量声明中的变量必须类型相同,变量名必须用逗号分隔,可以在变量名后包含初始化语句。
[csharp] view plaincopyprint?
<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 |
值类型,表示实际数据,只是将值存放在内存中,值类型都存储在堆栈中,包括:
简单类型: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型。
强制类型转换
语法:(数据类型)待转换的值;例如:
[csharp] view plaincopyprint?
{
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 -------------------------警告
还有一个较特殊的,就是@号,只要语句前加@号,即表示@号后面的包括有转义符的都按不进行转义运算。
例如:
[csharp] view plaincopyprint?
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基础知识二
- 黑马程序员—ADO.NET 基础知识
- 黑马程序员——ADO.net基础知识
- 黑马程序员—ADO.NET 基础知识
- 黑马程序员--学习笔记之ADO.Net基础知识
- 黑马程序员-------.net基础知识五
- 黑马程序员-------.net基础知识一
- 黑马程序员-------.net基础知识六
- 黑马程序员-------.net基础知识七
- 黑马程序员-------.net基础知识三
- 黑马程序员-------.net基础知识三
- 黑马程序员-------.net基础知识四
- 黑马程序员-------.net基础知识五
- 黑马程序员之 ASP.NET学习笔记:ADO.NET基础知识总结
- 黑马程序员_学习日记2_有关C#基础知识总结归纳之对象和类型
- 黑马程序员——java复习总结——Java基础知识
- 黑马程序员java基础知识之集合Collection