黑马程序员---表达式和运算符

-> 表达式
表达式是运算符和操作数的字符串。
-> 字面量
字面量是源代码中书写的数字或字符串,表示一个明确类型的明确的、固定的值
因为字面量是写进源代码的额,所以它们的值必须在编译期可知
-> 对于引用类型变量,字面量null表示没有被设置内存中的引用
-> 整数字面量
它们被书写为十进制数字序列
1、没有小数点
2、带有可选的后缀,指明整数的类型
整数类型字面量还可以被写成十六进制形式。数字必须是十六进制数,而且字符串必须以0x或0X开始
实数字面量
实数字面量的组成:
1、十进制数字
2、一个可选的小数点
3、一个可选的指数部分
4、一个可选的后缀
说明:无后缀的实数字面量是double类型,不是float类型
-> 字符字面量
字符字面量可以是下面的任意一种:
1、单个字符 char c1 = 'd';
2、一个简单转义序列 char c2 = '\n';
3、一个十六进制转义序列 char c3 = '\x0061';
4、一个Unicode转义序列 char c4 = '\uoo5a';
-> 字符字面量的类型是char
-> 简单转义序列是一个反斜杠后面隔着单个字符
-> 十六进制转义序列是一个反斜杠,后面跟着一个大写或小写的x,后面再跟着多至4个十六进制数字
-> Unicode转义序列是一个反斜杠,后面跟着一个大写或小写的u,后面再跟着多至4个十六进制数字
-> 字符串字面量
有两种字符串字面量类型:
1、规则字符串字面量
2、逐字字符串字面量
规则字符串字面量由双引号内的字符序列组成。规则字符串字面量可以包含:
1、字符
2、简单转义字符
3、十六进制和Unicode转义序列
逐字字符串字面量的书写如同规则字符串字面量,但是以一个@字符为前缀。
1、逐字字面量与规则字符串字面量区别在与转义字符串不会被求值。在双引号中间的所有东西,包括通常被认为是转义序列的东西,都被严格按字符串中列出的那样打印。
2、逐字字面量的唯一例外是相邻 的双引号组,它们被解释为单个双引号字符
说明:编译器通过让相同的字符串字面量共享堆中同一内存位置以节约内存
-> 求值顺序
-> 优先级
-> 综合性
-> 简单算术运算符
+ - * /
-> 求余运算符
求余运算符(%)用第二个操作数除第一个操作数,忽略掉商,饼返回余数。
-> 关系比较运算符和相等比较运算符
< > <= >= == !=
说明:C和C++不同,在C#中数字不具有布尔意义
-> 比较操作和相等性操作
当比较大多数引用类型的相等性时,只有引用被比较
1、如果引用相等,也就是说,如果它们指向内存中相同对象,那么相等性比较为true,否则为false,即使内存中两个分离的对象在所有其他方面都完全相等。
这称为浅比较。
string类型对象也是引用类型,但他的比较方式不同。比较字符串的相等性时,比较他们的长度和大小写敏感的内容。
1、如果两个字符串有相同的长度和相同大小敏感的内容,那么相等性比较返回true,即使它们占用不同的内存区域。
这称为深比较。
-> 委托也是引用类型,并且也是用深比较。
  比较委托的相等性时,如果两个委托都是null,或两者的调用列表中有相同数目的成员,并且调用列表想匹配,那么比较返回true
-> 比较数值表达式时,类型和值被比较。
-> 比较enum类型时,比较操作数的底层值。
-> 递增运算符和递减运算符
这些运算符是一元的,并有两种形式,前置形式和后置形式。
比较前置形式和后置形式
1、无论运算符使用前置形式还是后置形式,在语句执行之后,最终存放在操作数的变量中的值是相同的。
2、唯一不同的是运算符返回给表达式的值。
++ 前置递增++var 变量的值加1并保存,返回变量的新值
后置递增var++ 变量的值加1并保存,返回变量递增之前的旧值

-- 前置递减--var 变量的值减1并保存,返回变量的新值
后置递减var-- 变量的值减1并保存,返回变量递减之前的就值
-> 条件逻辑运算符
逻辑运算符用于比较或否定它们的操作数的逻辑值,并返回结果逻辑值
&& ||
条件逻辑运算符使用"短路"模式操作,意思是:如果计算Expr1之后结果已经确定了,那么它会跳过Expr2的求值。
-> 逻辑运算符
按位逻辑运算符常用于设置比特殊形式的方法参数。
这些运算符,除 按位非 以外,都是二元左结合运算符,按位非 是一元运算符
& 位与 产生两个操作数的按位与.仅当两个操作位都为1时结果位才是1
| 位或 产生两个操作数的安慰或.只要任意一个操作位为1结果位就是1
^ 位异或 产生两个操作数的按位异或.仅当一个而不是两个操作位为1时结果位为1
~ 位非 操作数的每个位都取反.该操作得到操作数的二进制反码 (是0变1 换)
-> 移位运算符 >> <<
按位移位运算符向左或向右把位组移动指定数量个位置,空出的为用0或1填充。
-> 赋值运算符
赋值运算符对运算符邮编的表达式求值,并用该值设置运算符左边的变量表达式。
= *= /= %= += -= << >>= &= ^= |=
可以防在赋值运算符左边的对象类型:
1、变量(本地变量、字段、参数)
2、属性
3、索引
4、事件
-> 条件运算符
条件运算符是一种强大且简洁的方法,基于条件的结果,返回两个值之一。
条件运算符是 三元运算符
Condition ? Expression1 : Expression2
-> Condition必须返回一个bool型值
-> 如果Condition求值为true,那么Expression1被求值并返回。否则,Expression2被求值并返回。
-> 一元运算符
一元运算符设置数字的符号:+ - 
-> 用户定义类型转换
-> 运算符重载
-> 运算符重载的限制
-> typeof运算符
typeof运算符返回作为它的参数的任何类型的System.Type对象。通过这个对象,可以得到类型的特征。(对任何已知类型,只有一个System.Type对象)不能重载typeof运算符
typeof运算符是一元运算符。
例如:
using System.Reflection; //使用反射命名空间来全面利用检测类型信息的功能
主方法:
Type t = typeof(MyClass);
FieldInfo[] fi = t.GetFields();
MethodInfo[] mi = t.GetMethods();
typeof运算符还被GetType方法调用,该方法对每个类型的每个对象都有效。
例如:
获取对象类型的名称:
MyClass mc = new MyClass();
s.GetType().Name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值