赋值语句
赋值语句进行赋值操作,就是给变量或常量赋值。
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { double x; //定义一个double型变量x int y = 3; //定义一个int型变量y,让y的值为3,可以读为把3赋给y int z = 8; //定义一个int型变量z,让z的值为8 x = y + z + Math.Sin(3.65); //将表达式的结果赋给x,Math.Sin是使用Math类库中的Sin方法求正弦值 } } }
赋值运算符(=)的左侧必须是能够接受和存储值得编程元素,即左侧必须是一个不为只读的变量或属性,或者是一个数组元素。赋值运算符右侧的表达式是一个值。
注释语句
注释就是解释,是对代码添加的描述性文字,用来说明程序的功能,语句块的作用等,以方便代码的阅读和维护。
C#的注释方法有3种,分别是单行注释,多行注释,和Xml注释。
单行注释以//开始,多行注释使用/* */跨行注释,XML注释使用特殊的注释语法,以///开头。在///之后,可以使用预先定义的标签注释代码,也可以插入自己定义的标签
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program {/* * 程序名: * 功能:输出字符串Hello World * 时间2016-4-4 */ static void Main(string[] args) { } } public class HelloWorld { ///<summary> ///控制台应用程序入口点 ///<param name="args">命令行参数</param> ///<returns>运行成功返回0</returns> ///</summary> public static int Main(string[] args)//程序入口点 { Console.WriteLine("Hello World !");//输出Hello World string name = Console.ReadLine();//暂停程序的运行,接受键盘输入的字符 return (0); } } }
选择正确的道路
条件循环
条件语句就是对条件进行判断,根据判断结果选择执行不同的分支
包括if语句,if else语句和switch语句
单分支结构
if(条件表达式)
{
语句块
}
如果满足条件则执行语句块,如果不满足则跳过语句块
双分支语句 if else语句
if(条件表达式)
{
语句块1
}
else
{
语句块2
}
如果满足条件则执行语句块1否则执行语句块2
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.Write("请输入一个字母:"); char c = (char)Console.Read(); //接受从键盘上输入的一个字符给c if (Char.IsLower(c))//判断输入的字母是否是小写 { Console.WriteLine("您输出的是小写字母"); } else { Console.WriteLine("您输出的是大写字母"); } } } }
多分支结构
if(表达式1)
{
语句块1
}
else if(表达式2)
{
语句块2
}
........
else if(表达式n)
{
语句块n
}
else
{
语句块n+1
}
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.Write("请输入一个字母:"); char c = (char)Console.Read(); //接受从键盘上输入的一个字符给c if (Char.IsUpper(c))//判断输入的字母是否是小写 { Console.WriteLine("您输出的是大写字母"); } else if(Char.IsLower(c)) { Console.WriteLine("您输出的是小写字母"); } else if (char.IsDigit(c)) { Console.WriteLine("您输入的是数字"); } else { Console.WriteLine("您输入的字符既不是数字也不是字母"); } Console.ReadKey(); } } }
Switch结构
switch语句能够根据表达式的值来选择执行的代码,if语句只能测试单个条件,如果需要测试多个条件,则需要书写很长的代码,而switch语句能够有效的避免较长的代码,并能测试多个条件,switch语句的语法为:
switch(表达式)
{
case 常量表达式1: 语句1 break;
case 常量表达式2: 语句2 break;
case 常量表达式3: 语句3 break;
......
case 常量表达式n 语句n break;
default 语句n+1 break;
}
语句执行的过程是计算switch语句中表达式的值,再依次与1-n个常量比较,当表达式的值与某个case后面的常量表达式的值相等时则执行case后面的语句,然后执行break语句跳出switch结构,如果几个常量表达式的值都不等于表达式的值则执行default处的语句。
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { float op1, op2; char sign; Console.WriteLine("请输入第一个数据,按回车键结束:"); op1 = float.Parse(Console.ReadLine()); Console.WriteLine("请输入第二个数据,按回车键结束:"); op2 = float.Parse(Console.ReadLine()); Console.WriteLine("请输入运算符号(+,-,*,/),以回车键结束:"); sign = (char)(Console.Read()); switch (sign) { case '+': op1 += op2; break; case '-': op1 -= op2; break; case '*': op1 *= op2; break; case '/': op1 /= op2; break; case '%': op1 %= op2; break; default: Console.WriteLine("你输入的不是算数运算符!"); break; } Console.WriteLine("运行结果是:{0}",op1); Console.ReadKey(); } } }
循环结构
While循环
while循环的语法为:
while(表达式)
{
//循环体语句
}
while循环执行的过程是:计算表达式的值,当表达式的值为“真”时,执行循环语句,然后再判断表达式的值,当表达式的值仍为“真”时,则再次执行循环语句,重复上述执行过程,当表达式的值为“假”时则退出循环。
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int i, sum; i = 1; sum = 0; while (i < 101) { sum = sum + i; i++; } Console.WriteLine("1+2+3+4+5+6+7+..........+100={0}",sum); Console.ReadKey(); } } }
for循环
for循环的语法为:
for(表达式1;表达式2;表达式3)
{
//循环体
}
for语句的执行过程
1.首先计算表达式1,为循环控制变量赋初值。
2.计算表达式2,检查循环控制条件,若表达式2的值为“真”,则执行一次循环体;若为“假”,控制转出循环结构。
3.执行完一次循环体后,计算表达式3,对控制变量进行增量或减量操作,再重复“第二步骤”操作。
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int sum; sum = 0; Console.WriteLine("计算 1+2+3.......+100的和:"); for (int i = 1; i <= 100;i++ ) { sum = sum + i; } Console.WriteLine("1+2+3+4+5+6+7+..........+100={0}",sum); Console.ReadKey(); } } }
改用do......while
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { int i, sum; i = 1; sum = 0; do { sum = sum + i; i++; } while (i < 101); Console.WriteLine("1+2+3+4+5+6+7+..........+100={0}",sum); Console.ReadKey(); } } }
foreach
foreach循环用于便利整个数组或集合,可以获取集合中的所有对象。语法如下:
foreach(数据类型 局部变量 in 集合或者数组)
{
//代码块
}
foreach语句的执行顺序是:判断集合中是否存在元素,若存在,则用集合中的第一个元素初始化局部变量,执行控制语句。然后继续判断集合中是否还有剩余元素,若存在,则将剩余的第一个元素初始化局部变量,继续循环,若不存在,则结束循环。
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { string[] str = { "Jan", "Feb", "Mar", "Apr", "May", "Jun" }; foreach (string s in str) { Console.WriteLine(s); } Console.ReadKey(); } } }
循环嵌套
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Console.Write("100之中的素数:"); for (int i = 2; i < 100; i++) { bool isPrime = true; for (int j = 2; j < i - 1; j++) { if (i % j==0) { isPrime = false; break; } } if (isPrime) { Console.Write("{0}, ", i); } } Console.ReadKey(); } } }
continue语句的功能不是退出循环结构,而是结束本次循环,即忽略continue后面的语句。
字符串
String对象的内容是不可改变的,所以也称静态串,不可改变指的是只要创建一个String类型的对象,就不能再改变对象的值,任何赋值,修改操作都将被分配一个新值。
可以使用String类的Compare,CompareOrdinal,CompareTo,Equals,EndsWith和StartsWith等方法进行字符串的比较。
使用IndexOf,IndexOfAny,LastIndexOf,LastIndexOfAny等方法获取字符串中的子字符串。
使用Copy和CopyTo方法可以将字符串或子字符串复制到另一个字符串或Char类型的数组。
使用Substring和Split方法可以通过原始字符串的组成部分创建一个或多个新字符串。
使用Concat和Join方法可以通过一个或多个子字符串创建新字符串。
使用Insert,Replace,Remove,PadRight,Trim,TrimEnd和TrimStart等方法可以修改字符串的全部或部分。
使用ToLower,ToLowerInvariant,ToUpper和ToUpperInvariant等方法可以更改字符串中Unicode字符串的大小写。
使用Length属性可以获取字符串中Char对象的数量,使用Chars属性可以发访问字符串中实际的Char对象。
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { string str1 = "I Love C# 3.0"; //声明一个名称为str1的字符串并赋值 string str2 = "I Love c# 3.0"; //声明一个名称为str2的字符串并赋值 string str3 = "I Love Java"; //声明一个名称为str3的字符串并赋值 Console.WriteLine("字符串的比较:"); //输出提示信息 Console.WriteLine("str1={0},str2={1},str3={2}", str1, str2, str3);//输出3个字符串的值便于观察运行结果 Console.WriteLine("str1是否等于str2:--》{0}", string.Compare(str1, str2));//比较str1和str2是否相等 Console.WriteLine("str1在忽略大小写的情况下是否等于str2--》{0}",string.Compare(str1,str2,true));//比较str1和str2在忽略大小写的时候是否相等 Console.WriteLine("str1是否等于str3--》{0}",str1.CompareTo(str3));//比较str1和str3是否相等 Console.WriteLine("str1的第0个字符是否与str2的第0个字符相等--》{0}",string.Compare(str1,0,str2,0,2)); Console.WriteLine("str1的第7个字符是否与str2的第7个字符相等--》{0}", String.Compare(str1, 7, str2, 7, 2)); Console.WriteLine("str1第7个字符是否与str2的第七个字符在忽略大小的情况下相等--》{0}", string.Compare(str1, 7, str2, 7, 2, true)); Console.WriteLine("str1是否以字符I开头--》{0}", str1.StartsWith("I")); Console.WriteLine("str1是否以字符i开头--》{0}", str1.StartsWith("i")); Console.WriteLine("str2是否以c#结尾--》{0}", str2.EndsWith("c#")); Console.WriteLine("字符串L为字符串{0}第{1}字符:",str3,str3.IndexOf("L")); Console.WriteLine("字符L在字符串{0}中最后出现的位置为{1}",str3,str3.LastIndexOf("L")); Console.WriteLine("将使用+将str1和str2相连后内容为-->{0}",str1+""+str2); Console.WriteLine("使用Concat方法将str1和str2相连后内容为--》{0}",string.Concat(str1,"&&",str2)); //Split方法用以切割字符串,返回一个包含所有分割子字符串的数组对象 string str = "How are you: what's you name:I Love .NET"; string result = ""; char split = ':';//定义分割的符号 Console.WriteLine("对{0}按冒号进行分割:",str); foreach (string s in str.Split(split)) { result += s + " "; } Console.WriteLine(result); Console.ReadKey(); } } }
String类还提供了很强大的Format()方法格式化字符串语法结构如下:
String str=string.Format("格式化字符串",参数列表)
常见的格式说明符
字符 | 说明 | 示例 | 输出 |
C | 货币 | string.Format("{0:C3}",2) |
$2.000 |
D | 十进制 | string.Format("{0:D3}",2) | 002 |
E | 科学计数法 | string.Format("{0:E}",1.20E+001) | 1.200000E+001 |
G | 常规 | string.Format("{0:G}",2) | 2 |
N | 用分号隔开的数字 | string.Format("{0:N}",250000) | 250,000.00 |
X | 十六进制 | string.Format("{0:X000}",12) | C |
0 | 格式说明符 | string.Format("{0:000.000}",12.2) | 012.200 |
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { string s = ""; //定义s用于存放格式字符串的输出结果 Console.Clear(); Console.WriteLine("数值格式字符使用例子:"); s = string.Format( "(C)Currency:........{0:C} " + "(D)Decimat:..........{0:D} " + "(E)Scientific:.........{1:E} "+ "(F)Fixed point:.......{1:F} "+ "(G) General............{0:G} "+ "(default):..........{0}(default='G')",-123,-123.45f ); Console.WriteLine(s); Console.ReadKey(); } } }
动态串StringBuilder
StringBuilder类并没有String类的功能强大它只提供了基本的替换,删除,添加字符串中的文本,它主要有两个参数Length和Capacity分别表示字符串的实际长度和字符串占据的内存空间长度例如:
StringBuilder MyStringBuilder=new StringBUilder("Hello World",25);
如果将Length 属性设置为大于Capacity 属性的值,则自动将Capacity属性更改为Length 属性相等的值如果将Length属性设置为小于当前StringBuilder对象内的字符串长度则会缩短该字符串。StringBulider 方法如下:
名称 | 作用 |
Append() | 给当前字符串添加一个字符串 |
AppendFormat() | 添加特定格式的的字符串 |
Insert() | 在当前字符串中插入一子字符串 |
Remove() | 在当前字符串中删除字节 |
Replace() | 在当前字符串中,用另一个字符串替换某个字符,或者用当前字符串中的另一个子字符串替换某个字符串 |
ToString | 把当前字符串转换为System.String对象 |
例如:
using System; using System.Collections.Generic; using System.Linq; using System.Text; /* */ namespace ConsoleApplication2 { class Program { static void Main(string[] args) { StringBuilder sb1 = new StringBuilder(); Console.WriteLine("sb1的初始容量为--》{0}",sb1.Capacity); Console.WriteLine("sb1的初始长度为-->{0}", sb1.Length); sb1.Append("Hello world");//向sb1中添加字符串 Console.WriteLine("向sb1中添加后sb1的容量:{0}", sb1.Capacity); Console.WriteLine("向sb1中添加后sb1的长度:{0}", sb1.Length); sb1.Append("hello C# I am very like Learning English."); Console.WriteLine("再次向sb1中添加后sb1的容量:{0}",sb1.Capacity); Console.WriteLine("再次向sb1中添加后sb1的长度:{0}",sb1.Length); StringBuilder sb2 = new StringBuilder("I Love Java",30); Console.WriteLine("sb2的原始内容是:"); Console.WriteLine(sb2); Console.WriteLine("使用replace方法将sb2中的Java换成C#后内容为:"); Console.WriteLine(sb2.Replace("Java","C#")); Console.WriteLine("使用insert方法在sb2的第七个字符中添加Java and后sb2的内容为:"); Console.WriteLine(sb2.Insert(7, "Java and")); Console.WriteLine("使用remove方法将sb2中第七个字符以后的删除后sb2的内容为:"); Console.WriteLine(sb2.Remove(0, 7)); Console.ReadKey(); } } }