zoukankan      html  css  js  c++  java
  • [黑马程序员]c#基础学习笔记

    .net指.net Framework框架,一种技术,一种平台
    c#语言
    .net可以开发桌面应用程序(Winform),Internet应用程序(asp.net、WebServer),手机开发wp7
    .cs表示是类文件
    Console.ReadKey();程序停在这里等待用户从键盘按下一个键。


    四、变量
    int number; (正负20亿左右)  
    number=1000;
    数据类型:数值(整型,非整数(double,decimal(财务金钱方面))),
              非数值(char,string)
    string 就是把0个或1个或多个字符连接起来。string name="";(正确的)
                                             char sex='';(错误)char sex=' '(正确)
    decimal money=10000.25M(10000.25m);精确到28位到29位,财务和货币计算
    double精确15到16位(科学计数法)
    在c#开发环境中直接写有小数点的数字是double类型的,在一个小数后加一个M/m就是告诉编译器是decimal类型的


    变量的声明方法
    1)int i;      2)int i=10;      3)int i,j;
      i=10;                          int zsAge=18,wwAge=20;
    把警告当成错误!!!!!!!!!!
    变量一定是,先声明,后赋值,最后使用。
    vs编码格式UTF-8支持多国语言
    命名规则
    (骆驼命名法Camel)studentName,name。(Pascal命名法)SoftwareName
    变量是可以重复赋值的,那么变量中的老值句不复存在了。
    Console.Write()只输出第一个参数Console.Write("我叫"+name,"今年"+age+"岁");结果:我叫张三
    不管程序是多么的小最好不要定义ab要定义一个有意义的变量。


    五、输入
    Console.ReadLine();用于让用户从键盘上输入一句话,当程序执行到这句话时,就会暂停,按回车将继续执行。如果想得到
    用户输入输入的内容就需要定义一个string类型的变量,接受用户输入的内容string userName=Console.ReadLine();
    凡是用户输入的全是string类型


    六、字符串的转义
    当我们需要在字符串中输入特殊字符时,半角引号,换行,退格,就需要使用转义字符,转义字符是一个字符,由一个\+一个字母组成具有特殊意义的饿一个字符。char ch='\"';
    1)("c#中的字符要用\"\"引起来);
    2)\n 换行
    3)\b Backspace键
    4)\t tab键,由多个空格组成的字符,有行与行之间的对齐功能。
    5)\\ 表示一个\
    6)@字符串里面的\不在转义;字符串换行;如果字符串前加@,有两个双引号代表一个双引号


    七、数据类型的自动转换(隐式转换)
    (1)int*double=double(将int转化为double类型)
    (2)int a=10,b=3;double c=a\b;结果为3           double c=1.2+a\b结果是4.5
    (3)当2种类型不一致时,满足以下会自动完成类型转化
       1)参与运算的两个数据类型必须兼容
       2)必须一边的数据类型表示的范围小,一边大,则把小的转向大的不丢失精度。
    【注:隐式转化不可以丢失精度】


    八、强制类型转换
    相容类型可以强制转化
    【注:丢失精度时需要程序员来写代码完成转化】
    Math.Round()四舍五入
    int a=(int)"33";错误!!!!!类型不一致
    string age=(int)Console.ReadLine();错误!!!!!类型不一致
    int age=Convert.ToInt32(Console.ReadLine());正确


    九、try...catch异常捕获机制
    try
    {
     有可能出错的Code
    }
    catch
    {
     错误处理Code
    }


    十、自加自减复合运算符-关系运算符
    int age=18;
        age++;效率高于(age=age+1);
        age--;
    一元运算符的优先级高于二元运算符
    <,>,==,!=,>=,<=


    十一、逻辑运算符(二元运算符)
    &&  ||  !
    与  或  非
    表达式1&&表达式2(表达式1,2全部是bool类型的)结果也是bool类型
    true&&true才为true
    !取反
    &&的优先级高于||
    与或的短路问题
    int a=10;
    int b=5;
    bool result=++a>50&&++b>1;
    a=11,b=5;当++a为false时后面的就不再进行计算
    bool result=++a>5&&++b>1;
    当a=11,b=5;当++5为true时,后面就不再进行计算


    十二、if..else...和switch....case和循环结构和三元表达式
    break;是必须要写的
    default的位置不影响执行结果.
    if(flag=false)
    {
     Console.WriteLine("工资:"+salary);
    }
    当flag被赋值后整个表达式的值为false,所以不会输出.
    switch(month)                                 switch(month)
    {                                             {
    case 1:                                       case 1:Console.WriteLine("1月");
    case 3:                                       case 3:
    case 5:                                       case 5:
    Console.WriteLine("31天");break;              Console.WriteLine("31天");break; 
    }                                             }
    【正确】                                       【错误】
    do
    {循环体}
    while{条件};
    1.执行循环体
    2.判断条件是否成立,如果是true,转向1,false转向3
    3.跳出循环
    while循环中flag的巧妙的使用


    十三、调试
    编译错误
    运行时逻辑错误


    十四、break和continue和三元运算符
    跳出循环(for,while,do..while..,foreach)
    通常break和if结合使用
    continue;用于循环中,程序一旦执行到continue语句,立即结束本次循环(就是不在执行continue下面的语句了),直接进行下一次循环,(do..while/while直接进行下一次循环条件的判断,如果成立,则再次进入循环)例:运动员跑步喝水的例子.


    十五、常量枚举
    const double PI=3.14;
    确定几个值的取值范围
    [public]enum Gender{male=1,female}
    例:
    enum QQStatus{online,offline,hiddle}
    class Program
    {
     static void Main()
     {
       QQStatus status=QQStatus.offline;
     }
    }
    【注:定义枚举类型时不能是int类型】
    枚举类型都可以强制转化为int类型,枚举值有默认编号从0开始(除特殊情况)()
    字符串转换为枚举类型
    string s = Console.ReadLine();
    Gender sex=(Gender)(Enum.Parse(typeof(Gender), s));
    enum是说一个关键字Enum是一个class


    十六、结构体(其实就相当于一种数据类型)
    public struct person
        {
           public string name;
           public int age;
           public Gender gender;
           public void SayHi()
           {}
        }
    【public勿忘】
     person per;
     per.name = "zdd";
     per.age = 23;
     per.gender = Gender.女;
     per.SayHi();
    访问修饰符 struct 结构名
    {
    定义结构成员
    }值类型先进后出栈,一般通过new的要分配空间


    十七、数组
    这些变量在内存中是连续存储的,通过索引器来访问
    循环变量的生命周期
    int类型的数组一旦声明就给就被初始化为0,decimal初始值为0,double初始值0.0;string初始值为null,char为0或\0(ASCII值)(也即null)
    int[] nums=new int[3];
    int[] nums={1,2,3};
    int[] nums=new intr[]{1,2,3};


    面试:关于枚举类型的,bool,int不是枚举类型;结构体是枚举类型,
    初始值:string 为null,数字类型0,其他为null。


    十八、冒泡排序
    n个数走n-1趟
    在n-1趟的比较过程中,第i趟+比较次数=元素个数
      public static int[] Sort(int[] nums)
            { 
              int temp = 0;
                //n-1趟,控制比较的趟数i
              for (int i = 0; i < nums.Length-1; i++)
              {
                  //每一趟中比较的次数(所有元上的个数(nums.length)-已经确定的元素个数(i))
                  for (int j = 0; j < nums.Length -1- i; j++)
                  {
                     
                      if (nums[j] < nums[j+ 1])
                      {
                          temp = nums[j];
                          nums[j] = nums[j + 1];
                          nums[j + 1] = temp;
                      }
                  }
                 
              }
              return nums;
            }


    十九、方法(函数)、参数、返回值
    代码重用的一种机制
    方法命名:开头大写eg:GetNameByFilter(),ShowUI()
    int.Parse()
    一个方法只能有一个返回值,多个参数.
    一个变量一旦定义在方法外,类的里面买就叫做类的字段,静态方法只能访问静态字段,非静态方法既能访问静态字段,也能访问非静态字段(实例字段).
    class Person
    {
     //字段
     int age;
    }
           
    二十、方法的重载
    public static int Max(int num1,int num2)
    public static int Max(double num1,double num2)
    public static int Max(decimal num1,decimal num2)
    方法的重载:两个同名的方法,一般在同一个类中,
    1)方法名同,
    2)参数个数或者类型不同,即可构成方法的重载【联想Console.WriteLine()】
    注:方法重载和返回值类型无关
    一个方法返回多个值:通过参数可以返回多个值。在参数前面加out即可.
    Code:
    public static bool TryParse(string str,out int re)
            {
                try
                {
                    re = Convert.ToInt32(str);
                    return true;
                }
                catch
                {
                    re = 0;
                    return false;
                }
            }
     int num;
                bool b = TryParse(Console.ReadLine(),out num);
                Console.WriteLine("b="+b);
                Console.WriteLine("num="+num);
                Console.ReadKey();
    如果参数是以out形式传入的,那么在传入前可以不赋值
    ref引用传递(既可以往里传值也可以往外返回值)
    out用于传出值
    ref可以理解为双向的,既可以传入也可以传出
    在传参的过程中如果参数有out,ref修饰的话,改变方法中参数的值,调用者方法





























  • 相关阅读:
    视频笔记
    【LeetCode】给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度
    getopt函数用法
    一些常用的算法库
    c语言结构体
    C语言中time_t数据类型详细介绍
    c语言 static的用法
    C语言中extern的用法
    MATLAB textread函数
    正则表达式
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3031624.html
Copyright © 2011-2022 走看看