C#基础(二)拆箱与装箱,循环与选择结构,枚举
一、装箱和拆箱
装箱是将值类型转换为引用类型
eg:
Int a=5;
Object o=a;
拆箱是将引用类型转换为值类型
eg:
Int a=5;
Object o=a;
Int b=(int)o;
利用装箱和拆箱功能,可通过允许值类型的任何值与 Object 类型的值相互转换,将值类型与引用类型链接起来
二、运算符和表达式
类别 |
运算符 |
说明 |
表达式 |
算术运算符 |
+ |
执行加法运算(如果两个操作数是字符串,则该运算符用作字符串连接运算符,将一个字符串添加到另一个字符串的末尾) |
操作数1 + 操作数2 |
- |
执行减法运算 |
操作数1 - 操作数2 |
|
* |
执行乘法运算 |
操作数1 * 操作数2 |
|
/ |
执行除法运算 |
操作数1 / 操作数2 |
|
% |
获得进行除法运算后的余数 |
操作数1 % 操作数2 |
|
++ |
将操作数加 1 |
操作数++ 或++操作数 |
|
-- |
将操作数减 1 |
操作数-- 或--操作数 |
|
~ |
将一个数按位取反 |
~操作数 |
运算符 |
计算方法 |
表达式 |
求值 |
结果(假定 X = 10) |
+= |
运算结果 = 操作数1 + 操作数2 |
X += 5 |
X = X + 5 |
15 |
-= |
运算结果 = 操作数1 - 操作数2 |
X -= 5 |
X = X - 5 |
5 |
*= |
运算结果 = 操作数1 * 操作数2 |
X *= 5 |
X = X * 5 |
50 |
/= |
运算结果 = 操作数1 / 操作数2 |
X /= 5 |
X = X / 5 |
2 |
%= |
运算结果 = 操作数1 % 操作数2 |
X %= 5 |
X = X % 5 |
0 |
优先级(1 最高) |
说明 |
运算符 |
结合性 |
1 |
括号 |
( ) |
从左到右 |
2 |
自加/自减运算符 |
++/-- |
从右到左 |
3 |
乘法运算符 除法运算符 取模运算符 |
* / % |
从左到右 |
4 |
加法运算符 减法运算符 |
+ - |
从左到右 |
5 |
小于 小于等于 大于 大于等于 |
< <= > >= |
从左到右 |
6 |
等于 不等于 |
= != |
从左到右 从左到右 |
7 |
逻辑与 |
&& |
从左到右 |
8 |
逻辑或 |
|| |
从左到右 |
9 |
赋值运算符和快捷运算符 |
= += *= /= %= -= |
从右到左 |
自加自减
表达式 |
类型 |
计算方法 |
结果(假定 num1 的值为 5) |
num2 = ++num1; |
前置自加 |
num1 = num1 + 1; num2 = num1; |
num2 = 6; num1 = 6; |
num2 = num1++; |
后置自加 |
num2 = num1; num1 = num1 + 1; |
num2 = 5; num1 = 6; |
num2 = --num1; |
前置自减 |
num1 = num1 - 1; num2 = num1; |
num2 = 4; Num1 = 4; |
num2 = num1--; |
后置自减 |
num2 = num1; num1 = num1 - 1; |
num2 = 5; Num1 = 4; |
转义字符:
转义序列 |
字符 |
\’ |
单引号 |
\” |
双引号 |
\\ |
反斜杠 |
\0 |
空 |
\a |
警告 |
\b |
退格 |
\f |
换页 |
\n |
换行 |
\r |
回车 |
\t |
水平制表符 |
\v |
垂直制表符 |
二、选择结构
1.
If(条件)
{
<语句块>
}
Else
{
<语句块>
}
2.
Switch(选择变量)
{
Case 值1:
...
Break;
Case 值2:
...
Break;
......
Case 值n:
......
Break;
Default:
......
}
Switch....case 语句其他特征:
- 各个case标签不必连续,也不必按特定顺序排列
- Default 标签可位于switch...case结构中的任意位置
- Default标签不是必选的,但使用default标签是一个良好的编程习惯
- 每两个case标签之间的语句数不限
四、循环结构
循环结构用于对一组命令执行一定的次数或反复执行一组命令,直到指定的条件为真
(一)循环结构的类型
While循环
While循环反复执行指定的语句,直到制定的条件为假
While(条件)
{
//语句
}
Break语句可以用于退出循环
Continue 语句可以用于跳过当前循环并开始下一循环
Do....while循环
Do....while循环与while循环相似,两者的区别在于:Do....while循环中即使条件为假时也至少执行一次循环体中的语句
Do
{
//语句
}
While(条件)
for循环
for循环要求只有在对特定条件进行判断之后才允许执行循环
这种循环用于将某个语句或语句块重复执行预定次数的情形
For
{
//语句
}
foreach循环
foreach循环用于遍历整个集合或数组
Foreach(数据类型 元素(变量) in 集合或数组)
{
//语句
}
五、数组
数组是同一数据类型的一组值
数组属于引用类型,因此存储在堆内存中
数组元素初始化或给数组元素赋值都可以在声明数组时或在程序的后面阶段中进行
1.不赋值
Int []a=new int[5];
2.声明并赋值
Int []a=new int[5]{0,9,8,7,6};
Int []a=new int[ ]{0,9,8,7,6};
Int []a={0,9,8,7,6};
注意:数组的初始值的数目必须和数组的一样
六、冒泡排序
口诀:
n个数字来排序
两两相比小靠前
外层循环n-1
内层循环n-1-i
For(int i=0;i<n-1;i++)
{
For(int j=0;j<n-1-i;j++)
{
//比较j和j+1位置的元素,如果前大后小就交换
}
}
七、枚举
枚举是一组已命名的数值常量
用于定义具有一组特定值的数据类型
枚举以关键字enum声明
默认情况下,将0值赋给枚举的第一个元素,然后对每个后续的枚举元素按1递增
在初始化中可以重写默认值
Public enum weekdays
{
Monday=1,
Tuesday=2,
Wednesday=3,
Thursday=4,
Friday=5
}
C# 中的结构可以在其内部定义方法并可包括构造函数,但不能无参
C#基础(二)拆箱与装箱,循环与选择结构,枚举的更多相关文章
- JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法
JAVA进阶之旅(一)--增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法 学完我们的java之旅,其实收获还是很多的,但是依然还有很 ...
- .NET基础知识(02)-拆箱与装箱
装箱和拆箱几乎是所有面试题中必考之一,看上去简单,就往往容易被忽视.其实它一点都不简单的,一个简单的问题也可以从多个层次来解读. 常见面试题目: 1.什么是拆箱和装箱? 2.什么是箱子? 3.箱子放在 ...
- 《Java基础知识》Java包装类,拆箱和装箱
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...
- .NET面试题解析(02)-拆箱与装箱
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 装箱和拆箱几乎是所有面试题中必考之一,看上去简单,就往往容易被忽视.其实它一点都不简单的,一个简单的问题也 ...
- JAVA中拆箱和装箱
浅谈JAVA中拆箱与装箱 一. 什么是装箱?什么是拆箱? 在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i = new Integer(10) ...
- Java知多少(24)包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...
- C# 拆箱与装箱及优化
1.概念 装箱在值类型向引用类型转换时发生,在堆中分配. 拆箱在引用类型向值类型转换时发生. 2.装箱拆箱的过程 //这行语句将整型常量1赋给object类型的变量obj:众所周知常量1是值类型,值类 ...
- [Java学习] Java包装类、拆箱和装箱详解
虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎合人类根深蒂固的习惯, ...
- Java包装类、拆箱和装箱详解
转载:https://www.cnblogs.com/ok932343846/p/6749488.html 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程, ...
- int和Integer及拆箱与装箱
int和Integer 如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null.但是如果面试官再问一下In ...
随机推荐
- Linux显示文件和目录的详细资料
Linux显示文件和目录的详细资料 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls -l 总用量 56 -rw-r--r-- 1 youhaidong y ...
- 事件驱动的Java框架
事件驱动的三个要素: 事件源:能够接收外部事件的源体. 侦听器:能够接收事件源通知的对象. 事件处理程序:用于处理事件的对象.
- vue常用的网址
http://cn.vuejs.org/v2/guide/routing.html#官方路由 https://unpkg.com/vue-router@2.3.1/dist/vue-router.js
- TreeNode.trage的使用
对于trage的使用 msdn是这样解释的 TreeNode.Target 属性 .NET Framework 2.0 其他版本 注意:此属性在 .NET Framework 2.0 版中是新增的. ...
- string的常见用法
使用前提:需要头文件! #include<string> using namespace std; 1.string类型是可以下标访问的,也可以通过迭代器访问 string::iterat ...
- Luogu P1410 子序列
题目大意: 给定一个长度为\(N\)(\(N\)为偶数)的序列,] 问能否将其划分为两个长度为\(\frac{N}{2}\)的严格递增子序列, 输入一共有\(50\)组数据,每组数据保证\(N \le ...
- 【BZOJ2152】聪聪可可(点分治)
[BZOJ2152]聪聪可可(点分治) 题面 Description 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电 ...
- [BZOJ4542] [Hnoi2016] 大数 (莫队)
Description 小 B 有一个很大的数 S,长度达到了 N 位:这个数可以看成是一个串,它可能有前导 0,例如00009312345.小B还有一个素数P.现在,小 B 提出了 M 个询问,每个 ...
- js中实现继承的不同方式以及其缺点
1.利用call和apply,借助构造函数 fucntion P(){ this.name = "P"; } fucntion C1(){ P.call(this); } 解释一下 ...
- sql注入之一次艰难的绕过-三层防护(oracle)
打开:www.xxxx.com/news/detail.jsp?id=2862 我们经过测试知道此处含有sql注入.我们尝试下: http://www.xxxxxx.com/news/detail.j ...