如鹏网.Net基础1 第二章:C#语言基础1

------------------------------------------------

重点提示:

1、基本数据类型的区别:char、byte、short、int、long;float、double;

2、CTS是什么?String和string的区别;

3、枚举类型;

4、自增自减;

5、如何交换两个变量;

6、赋值表达式的值:Console.WriteLine(a=b+1);赋值表达式也有值,它的值就是复制之后左边的值;

7、三元运算符:String s=(i==5?"你好":"我好");

8、if;if……else;if……else if……;案例:体重指数计算器;

9、switch……case;

------------------------------------------------

第 1 节   关键字和标识符

    C#定义了一些关键字(public/static/void/class/int/string),这些关键字是构成C#基本语法用的。(默认蓝色)

    Main、String、Console等这些都不是关键字。(默认线绿色)

  标识符是用来给类、方法、变量等命名用的。

    命名规则:1)由字母、中文(不推荐)、数字、下划线 组成;

         2)不能以数字开头;

         3)不能是关键字。

    C#语言是大小写敏感的:demo和Demo是两个东西;

    驼峰命名法:每个单词第一个字母大写。如果是变量,第一个单词首字母要小写

    标识符要有意义;

    标识符的命名规范,不是强制规定,而是“潜规则”:

      类名、方法名:大写开头

      变量名:小写开头

      中文可以做变量名,不建议用。

      特殊符号不能组成标识符。

  (*)扩展:有同学提到“C#中也可以用@做标识符,

  比如int @a=5;int @int=6;”,其实@只是一个转义符而已,并不是标识符的一部分。

   特殊符号不能组成标识符。

------------------------------------------------

 第 2 节   变量的声明和赋值、变量的作用域

  程序所使用的数据一般都是内存中的。操作内存的时候要使用地址,通过指向内存的指针操作内存,

变量是给这段内存取一个名字。我要告诉别人如何使用这块内存的话需要给这块区域取一个名字,比如price,这就是变量名“price”。

  变量 和 数据是两个东西。

    声明+赋初值 变量类型 变量名=初始值(匹配类型的)

  声明:变量类型 变量名;

  赋值:变量名=初始值;

  变更使用之前必须赋初值。

  变量的作用域:在同一个作用域内一个变量只能声明一次。

------------------------------------------------

 第 3 节   数值类型简介和显式隐式转换  

  数值类型:

    整数类型:

        类型        占用字节  取值范围

        byte(字节)      1    0到255        无符号(内存的最小单位)

        short(短整)            2           -2^15到2^15-1

        int(整型)              4         -2^31到2^31-1

         long(长整)             8        -2^63到2^63-1

    小数类型:

            float(单精度浮点数)     4          不用记

        double(双精度浮点数) 8     不用记

       long > int >short >byte

     double > float  

      1、byte是“字节”类型,代表一个8位二进制,也就是一个字节。

      2、整数常量默认是int类型,小数常量默认是double类型。

      3、选用数据类型的时候在考虑到数据的可能范围之后,选择最小范围的类型,这样节省资源

        注:项目命名不要用中文和特殊字符。

    超范围:编译错误,无法生成exe。

  类型转换:(编译只看类型,不看实际值)

    小范围转换成大范围是 隐式类型转换

    大范围转换成小范围必须显式类型转换,可能数据丢失 (类型)

------------------------------------------------

 第 4 节   float和double的声明类型转换等问题 

   小数类型默认是double,当声明float类型时,必须加F(f)

   注:显示数据转换时,要注意丢失数据问题。

  1、声明

  double d1 = 3.14D;//ok,3.14d也可以

  double d2 = 3.14;//ok,一般不用写“D”

  double d3 = 3;//ok

  float f1 = 3.14;//error:不能从 double 转换为 float。小数默认是double

  float f2 = 3.14F;//ok,3.14f也可以

  2、小数类型转换

  double d1 = 3.14;

  float f1 = 3.14F;

  double d2 = f1;//ok,隐式类型转换

  float f2=d1;//error:不能从 double 转换为 float

  float f3=(float)d1;//ok,显式类型转换

  int i1 = d1;//error

  int i2 = (int)d1;//ok,显式类型转换,会丢失小数部分

  double d3 = i1;//ok,隐式类型转换

  3、加(+)减(-)乘(*)除(/)

  整数/整数 结果是整数

  有小数参与的运算,结果是小数类型 (加F)

  计算5除以8:

  Console.WriteLine(5 / 8);   //     result:  0   因为两边都是int 结果会隐式转换成int (丢失小数部分)

  Console.WriteLine(5.0 / 8.0);  //       result: 0.625   因为两边都是double 结果是double

  Console.WriteLine(5.0 / 8);  //          result: 0.625  因为有一个数是double 结果是double

  Console.WriteLine(5F / 8F); //    result: 0.625   因为全部是float 结果是float

  Console.WriteLine(5D / 8D);  //   result: 0.625   因为两边都是double 结果是double  

  Console.WriteLine(5 / 8f);  //     result: 0.625   因为有一个数是小数类型 结果是小数类型

------------------------------------------------

 第 5 节   String的声明主要是转义符的问题 

   常用数据类型:

       string(String)由字符组成的串,用英文的双引号引起来 ""  。

    ‘‘  :长度为0的char

    ""  :长度为0的字符串,有字符串 ,空字符串 等于string.Empty

    string.Empty :空字符串

    null  : 不等于空字符串

    "0"   :  

    \ (反斜线):转义  后面的字符有特殊含义   \n 换行字符   \\  一个斜线  \"\"    一对双引号

    在字符串前加“@”:告诉编译器,没有转义字符,(@只对\有作用,当有引号时,不要用@)

------------------------------------------------

 第 6 节   char、bool以及string和数值类型的转换 

   char: 代表一个字符(有且只有一个字符) ,英文的单引号 ‘‘,长度只能为1

      可以是转义字符: char c=‘\n‘;   ‘\\‘  ‘\"‘  ‘\‘‘

bool:  true  false  就两种状态 (两个值)

    int:

    最大值int.MaxValue ;

    最小值: int.MinValue,  其他数值类型也可以通过MaxValue、MinValue获取取值范围。

   其他数据类型转换为string:convert

     a.ToString()  //null 抛异常

    推荐:Convert.ToString()  //null 不抛异常

   显式类型转换仅限整数、小数类型之内。Cast  (类型有交集)

   String转换为int/long:

    Convert.ToInt32("123")、 Convert.ToInt64("456")

------------------------------------------------

 第 7 节  CTS(大写String和小写string区别是什么?)  

  1、不仅可以把C#编译成.Net IL,还支持Basic、Python、Ruby等语言,甚至还支持Java。不同语言中的数据类型定义是不一样的,

      .Net中定义了通用的数据类型(CTS,Common Type System):String、Int16、Int32、Int64、Boolean、Double。通过转到定义可以看到这些都是类(结构体)。

  2、C#语言规范中定义了string、int、long、bool、double等原始类型,编译器会把这些类型翻译成CTS中的类。反编译看IL就能看到了。

  string  int long bool double:C#系统关键字

 String Int32  Int64 Boolean Double:CTS中定义的类

------------------------------------------------

 第 8 节  枚举类型  

  1、有一些数据是开放性范围的,比如int、float、String。有些数据可选值是有限取值范围的,比如星座、月份名、方向,如果用1/2/3/4代表东南西北,那万一设置了8怎么办?

  2、枚举是一种定义确定取值范围的特殊类型语法:

  enum Dir

  {

  East,West,North,South;

  }

  3、使用Dir d = Dir.East;

  eunm 和是类的声明是平级的。(特殊的类)

------------------------------------------------

 第 9 节  基本运算符(余、自增自减、字符串)  

  1、运算符就是加(+)减(-)乘(*)除(/)等符号,英文键盘输入×÷很麻烦,所以用* /表示乘除。

  2、求余数运算符“%”:5%4为1、5%5为0、22%7为1。

  3、自增:++是对一个变量进行自增运算

      int x=3;

      x++;

    自减:--

  4、+还可以用来对字符串进行拼接:"abc"+"cde"

  5、+还可以与其他类型拼接:"hello"+5

  6、"hello"+5+5、"hello"+(5+5)、5+5+"hello"的区别。

  7、表达式从左向右扫描进行扫描运算,一旦遇上一个字符串,之后的运算就变成字符串了。

  8、提问:3+5+"hello"+5+3 结果是什么。答案请向下拉 8hello53

  字符串和任何其他数据相加都是拼接字符串(其他数据转换成字符串)。

   "hello"+5+5    //hello55

        5+5+"hello"    //10hello   运算从左向右

   "hello"+(5+5)   //hello10  括号改变运算优先级

------------------------------------------------

第 10 节  赋值运算符和实现加法计算器

  1、int i=5;

  应该读成“声明int类型变量i,并且把5赋值给i”。

= :赋值运算符不是“等于”的意思 ,左边只能有一个变量

  +=:  i=i+3   i+=3

  -=:  i=i-3    i-=3

  *=:  i=i*3   i*=3

  /=:  i=i/3    i/=3

------------------------------------------------
第 11 节  变量的复制传递和交换两个变量的值

  复制传递。(让变量2指向变量1 “当前”所指向内存的值)

  1、交换两个变量的值:


1

2

3

4

5

6

int i=10;

int j=20;

int temp = i;//temp:10;i=10;j=20;

i=j;//temp:10;i=20;j=20;

j=temp;//temp:10;i=20;j=10;

Console.WriteLine("i="+i+";j="+j);

  2、另一种不需要中间变量的做法

    int i=3;

    int j=5;   //   j=5

    i=i+j;  //  i=8

    j=i-j;    //    j=3

    i=i-j;    //    i=5

  3、变种不用中间变量交换两个值方法:

        int i=100;
            int j=4;
           
            i=i-j;
            j=i+j;
            i=j-i;

------------------------------------------------
第 12 节  关系运算符和运算符优先级

  比较运算符:(关系运算符)用来进行值的真假性判断,结果为bool类型。

    ==  等于(相等)

    !=   不等于(不相等)

    >    大于

    >=  大于或等于

    <    小于

    <=  小于或等于

  运算符优先级:

    程序不仅是给编译器看的,更重要是给程序员看的。

    “()” 最伟大的括号解决一切烦恼。

    程序可读性很重要,不要写出别人看不懂的代码。

------------------------------------------------
第 13 节  赋值表达式也有值  

  1、下面程序的执行结果是什么?

  int a=3;

  int b=4;

  Console.WriteLine(a==b); //false

  Console.WriteLine(a=b); //4

  2、赋值运算本身也是一个值,这个值就是赋值之后左边的值。

  int i=(a=b)+3;

  Console.WriteLine(i); //7

  这个b1呢?bool b1 = (a=b); //编译错误:类型不对,不能赋值

  这个b3呢?

  bool b1 = false;

  bool b2 = true;

  bool b3=(b1=b2);   //true

------------------------------------------------
第 14 节  前自增和后自增的区别 

  1、

  int i=10;

  int i1=i++;

  Console.WriteLine(i1); //10

  Console.WriteLine(i); //11

  int j=10;

  int j1=++j;

  Console.WriteLine(j1); //11

  Console.WriteLine(j); //11

  2、i++是赋值之后再自增,++i是先自增再赋值。

  i--和--i也是一样的,自己试验。

  没有赋值时,i++(表达式的值是i)和++i(表达式的值是i+1),没区别(写程序避免++i)

这个问题面试时常考!

------------------------------------------------
第 15 节  逻辑运算符(与或非) 

  用来对布尔类型的值进行运算的

  二元运算符:+ - * / %

  一元运算符:!

  &&:(并且)二元运算符,两边都是true结果才是true。“我是中国人”“我是男人”只要有一个为假,那么“我是中国人 并且 我是男人”就是假。

   ||:(或者)二元运算符,只要有一个是true结果就是true。“我是中国人”“我是男人”只要有一个为真,那么“我是中国人 或者 我是男人”这个判断就是真。

     !:(非)一元运算符,取反,真的变假,假的变真。

------------------------------------------------
第 16 节  逻辑运算符的短路问题 

   使用 && 和 || 时,注意知足问题,前面条件不成立时,就不去计算后面条件的值,直接给出判断结果。

   可以使用&和|,排除短路问题(很少使用,只要知道就行)。

  使用场所:

     int i=8;
            int j=0;
            bool b=(j!=0)&&(i/j==2);
            Console.WriteLine(b);
         可以简化运算(避免下一个条件出错的情况使用)

     if(str!null && str.Length>5)

------------------------------------------------
第 17 节  三元运算符 

  条件表达式?表达式1:表达式1

  如果“条件表达式”为true,则表达式的值为“表达式1”,否则为“表达式2”

------------------------------------------------
第 18 节  if简介
  if(比较表达式){

    //一行或多行代码

  }

  当“比较表达式”为true时执行{}内的代码。

------------------------------------------------
第 19 节  if易错点

  1、if("必须是条件表达式") ,不能用if(i=10),C#中条件表达式必须是bool类型。

  2、哪怕只有一行代码,也不要省略大括号{}(形成良好的编程习惯)(不易读,增加出错概率)

  3、注意 if()后面不能有“;”封号,封号表示结束。

    {}表示一个作用域,叫作代码块。

    if(i==8); 相当于if(i==8){}

------------------------------------------------
第 20 节  else子句
  if语句还可以有else:

    if(比较表达式){

      //表达式为true时执行的代码块

    }

    else

    {

      //表达式为false时执行的代码块

    }

  好习惯:(不要排除一般不可能的情况

    判断字符串长度时,请写:

    if(name.Length<=0)

    {

      MessageBox.Show("请输入姓名");

    }else

    {

       MessageBox.Show(name+",你好!");

    }

------------------------------------------------
第 21 节  elseif及练习
  

    if(条件表达式1){

      //表达式1为true时执行的代码块

    }

    else if(条件表达式2)

    {

      //表达式1为false,表达式2为true时执行的代码块

    }

    else if(条件表达式3)

    {

      //表达式1为false && 表达式2为false ,表达式3为true时执行的代码块

    }

    else //可以不用最后的else,建议加上,更加严谨

    {

      表达式都为false时执行

    }

------------------------------------------------
第 22 节  if案例:省市联动选择

  要点:

    1.加载省数据到省列表中(列表填充)

    2.选择省后把对应的市列表加载到市列表中去

------------------------------------------------
第 23 节  if案例:体重指数计算器
   1、数据类型转换

   2、() :括号是万能的

   3、条件区间不留缝隙

------------------------------------------------
第 24 节  三元运算符和if之间的选择
  作业:用户输入出生的月份、日期,计算用户的星座,然后显示这个星座的说明。

  动手才是硬道理。

  1、三元运算符能实现的,基本if都能实现,但是if能实现的,三元运算符不一定能实现。

  2、简单的判断然后根据判断的bool结果进行简单的赋值才用三元运算符。

------------------------------------------------
第 25 节  switchcase

  定义:

    switch(表达式)

    {

      case 取值1:

        //执行语句A

      break;

      case 取值2:

        //执行语句B

      break;

      case 取值3:

        //执行语句C

      break;

      ........

      default:

        //都不满足执行的语句

      break;

    }

  1、表达式可以是byte ,short,int ,char,string,枚举类型,(long)。

  2、break意味着switch的结束,不能丢。default(可以不写,但强烈建议要写,代码严谨性)相当于if的else,当所有case都不匹配时,执行default。

  3、如果case中没有任何的代码,如果不写break,则会贯穿到下一个代码。

  多个switch条件合并的问题:当多个case条件的代码一样时,可以合并,最后一个加break;

  只有当进行离散值判断的时候,switch可以用来替换if。switch能做的if都能做,反之不一定。

如鹏网:http://www.rupeng.com

时间: 2024-10-15 12:52:38

如鹏网.Net基础1 第二章:C#语言基础1的相关文章

第二章 Mablab语言基础

第二章 Mablab语言基础 2.1 Matlab的变量与常量 1) input:x=input(‘please enter a numb’) 2) Inf/inf:正无穷大 3) pi:圆周率 4) 默认保留变量:ans 2.2 Matlab的基本数据结构(1) 1) 修改Curent Folder:修改快捷方式的目标属性 2) 向量=数组 3) 行矩阵a=[1 2 3]或a=[1,2,3];列矩阵b=[1 2 3]'或b=[1;2;3] 4) 内置矩阵函数ones(ones(4):4维全1矩

Java图示(第二章 Java语言基础)

Java图示(第二章 Java语言基础) 三个基本部分:一个包声明(package语句).任意数量的引入(import语句).类和接口声明(class和interface语句) 1.包声明—package语句 1)包是类和接口的集合,即类库 2)用类库管理类,方便管理 3)Java类都在类库中 4)只有一条包声明,且为第一条 2.引入语句—import语句 1)import语句在包语句后,所有类或接口前 2)两种形式 (1)import 包名.类名: (2)import 包名*://编译器会识别

如鹏网.Net三层架构第二章登录和会员管理

讲解餐饮项目中登录功能和会员管理功能 -------------------------------------------------------------------------------------------- 三层项目: 关系型数据   C#类数据 表名          类名 列名 字段封装成属性 三层  各个功能分开 登录窗口点登录->调用BLL方法->调用DAL方法->数据库 数据库->DAL->BLL->UI -------------------

第二章 java语言基础

2.1 java语言基础组成 关键字 标识符 注释 常量和变量 运算符 语句 函数 数组 2.1.1 标识符 1. 组成:由英文字母.数字._和$ 2. 规则: 不能以数字开头 不能使用关键字 3. java的命名规范 包名:所有字母都小写.xxyyy 类名:所有单词的首字母大写.XxxYy 变量名和函数名:第一个单词首字母小写,之后的每个单词首字母都大写.xxYyyZz 常量名:所有字母都大写,多个单词用下划线连接.XXX_YY 2.1.2 常量和变量 1. 常量:不能改变的数值 分类: 整数

第二章 R语言基础

二.操作基础 %%取余 %/%整数除法 (1)eigen(...)求解方阵的特征值和特征向量 (2)solve(D,A)求解DX=A (3)data<-list(...)取里面的对象data[["列名称"]]:data[[下标]]:data$列名称 (4)unlist(列表对象)把列表对象转化为向量对象 (5)names(数据框)读取并编辑列的名称 (6)数据框data 取里面的对象data[["列名称"]]:data[[下标]]:data$列名称;data[

第二章 Java语言基础(2)

1.编写一个java application,求出e=1+1/1!+1/2!+1/3!+...+1/n!+...的近似值,要求误差小于0.0001. package test; public class Test { //求n的阶乘 public static int fn(int n) { if(n == 1) { return 1; } return n*fn(n-1); } //求和 public static double sum(int n) { double sum = 0; for

《The Django Book》实战--第二章--动态网页基础

这章演示了一些最基本的Django开发动态网页的实例,由于版本不一样,我用的是Django 1.,6.3,有些地方按书上的做是不行的,所以又改了一些,写出来让大家参考. 这是一个用python写的一个显示当前时间的网页. 1.开始一个项目. 在命令行中(指定要保存项目代码的盘或文件夹下)输入 python ...\django-admin.py startproject djangobook  (虽然在环境变量Path中加入了django-admin.py的地址,但是在前面还是要加上路径名,不知

第二章线程同步基础

Java 7 并发编程实战手册目录 代码下载(https://github.com/Wang-Jun-Chao/java-concurrency) 第二章线程同步基础 2.1简介 多个执行线程共享一个资源的情景,是最常见的并发编程情景之一.在并发应用中常常遇到这样的情景:多个线程读或者写相同的数据,或者访问相同的文件或数据库连接. 为了防止这些共享资源可能出现的错误或数据不一致,我们必须实现一些机制来防止这些错误的发生. 为了解决这些问题,引入了临界区(Critical Section)概念,临

第一章. ActionScript 语言基础

第一章. ActionScript 语言基础 1.0. ActionScript 3.0 Cookbook 概述 1.1. 新建一个 ActionScript project 1.2. 自己定义应用程序属性 1.3. 在哪里写ActionScript 代码呢 1.4. 怎样跟踪信息 1.5. 处理事件 1.6. 响应鼠标和键盘事件 1.7. 算术运算 1.8. 逻辑运算 1.9. 运行条件语句 1.10. 运行复杂的条件语句 1.11. 某段时间反复运行一种操作 1.12. 长时间运行一个任务