zoukankan      html  css  js  c++  java
  • 17.2015.08.04第十八节课 C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)

    一.数值类型及其调用原理

    名称

    说明

    所占字节

    范围

    byte

    字节型

    1

    -27~27-1

    short

    短整型

    2

    -215~215-1

    int

    整型

    4

    -231~231-1

    long

    长整型

    8

    -263~263-1

    char

    字符型

    1

    0~65535

    float

    单精度型

    4

    ±1.5*10-45~±3.4*1038

    double

    双精度型

    8

    ±5.0*10-324~±1.7*10308

    bool

    布尔型

    1

    只有true和false两个值

     

            static void Main(string[] args)

            {

                int i = 10;

                int j = i;//把i的值赋值给j

                i = 20;

                Console.WriteLine(j);

            }

     

     

     

    以上代码及图的说明

    /*   数值类型赋值就是值的拷贝//// 

    i的值存储在栈;

    int j=I(意思是将i的值拷贝一份给J,同样也是存储在栈);

    上面代码输出结果10        */

    二.引用类型(数组、对象、string、object)

    引用类型的变量又称对象,C#有两个内置的引用类型:object类型和string类型

    • object是所有类型的父类,可以将任何类型的赋值赋给object类型的变量。

    string是字符串类型,字符串对象一旦创建,内容就不可以更改,它是不可变的。

     

    /*以上代码的几点说明

    string s1 = "a";

    string s2 = s1;

    s1 = "b";

    Console.WriteLine(s2);

         S2引用类型的值类型赋值如上图所示,输出结果是a           */

     

    */以上图示的几点说明:

    1. 定义一个静态变量public static int i = 10;

    2.定义一个静态无返回值的方法      

     public static void Cry() {

                Console.WriteLine("我爱哭");

            }

    3.以上静态变量和静态方法,不用实例化对象同样可以调用,

    例如静态变量i的调用:Person.i

    静态变量Cry方法的调用: Person.Cry;   

    常用和公共的变量或方法一般都设置为静态.

    4.存储在堆的非静态变量和方法区的调用,必须要通过实例化对象来调用,否则强制调用会产生错误.

    例如

    实例化一个对象:Person p=new Person,

    Person的变量name的调用: p.name 

    Person的方法Sayhi的调用: p.Sayhi()

    5.如果已经完成实例化P的基础上,再实例化一个P1,那它的值在堆会整体打包复制一份.

    三.装箱、拆箱

    装箱:把值类型装换成引用类型

    实例:

    Int i=10;

    String s=i.ToString();

    Console.WriteLine(s);

    拆箱:把引用类型转换成值类型

    实例:

    String s=”10”;

    Int i=Convert.ToInt32(s);

    Console.ReadKey();

    注:装箱和拆箱都会耗用系统资源,如处理大量数据的时候会造成系统缓慢.在开发中尽量避免装箱和拆箱.   避免的处理办法可以使用泛型方法.

     四、常量和变量

    1. 常量的定义方法,例如const double pi=3.14
    2. 成员变量也叫全局变量,写在类的里面(class program),方法的外面(staic void Main(string[]) args)的变量称为全局变量,在本类中任何地方都可调用.
    3. 局部变量,写在方法的里面的变量称为局部变量.只能在该方法里面调用.

    五、数据类型转换

    隐式转换:低精度转为高精度,直接转。

    int i=123;

    Double b=i;

    显式转换:高精度转为低精度,必须指明要转换的目标类型,由于数据的差异,有可能丢失部分数据。

    Class Program

    {

       static void Main()

       {

          double x=1223.4;

          int a;

          a=(int)x;

          System.Console.WriteLine(a);

    }

    }
    注:高精度类型向低精度类型转型,数值会发生改变.例如1223.4变成1223

    六、C#中的运算符使用

    14.1算术运算符

    +(加)、-(减)、*(乘)、/(除)和%(取余数)五个二元运算符和++(自增)、- -(自减)两个一元运算符

    Eg:class Program

        {

            static void Main(string[] args)

            {

                int a = 12345;

                int b = 234567;

                int c, d;

                long e, f;

                c = a * b / b;

                d = a / b * b;

                e = (long)a * b / b;

                f = (long)a / b * b;

                Console.WriteLine(c);

                Console.WriteLine(d);

                Console.WriteLine(e);

                Console.WriteLine(f);

            }

    }

    结果:

    -5965

    0

    12345

    0

    ++(自增)、- -(自减)的用法

     

    14.2赋值运算符

    操作符

    运算规则

    意义

    =

    a=b

    将b赋值给a

    +=

    a+=b

    a=a+b

    -=

    a-=b

    a=a-b

    /=

    a/=b

    a=a/b

    *=

    a*=b

    a=a*b

    %=

    a%=b

    a=a%b

    ??

    a=b??c

    B为null吗,为null则a=c不为null则a=b

    *赋值运算必须是类型兼容的,即左边的变量必须能够接受右边的表达式的值,否则会产生编译错误。

    如果是对象赋值,则称为引用赋值。将右边对象的引用值(地址)赋给左边的变量,这样,两个变量地址相同,即指向同一对象。

    问号的两个实例

                //int i = 3 > 2 ? 10 : 20;

                //Console.WriteLine(i);

    以上代码单问号是三目运算,意思是I =3是否大于2,如果成立返回10,反则返回20.

     

                //string s1 = null;

                //string s2 = s1 ?? "aa";

                //Console.WriteLine(s2);

    以上代码双问号是变量为空的判断,S2的返回值,如果S1为空返回aa,反则返回S1的值.

     

    14.3关系运算符

    ==,!=,<,>,<=,>=

    14.4逻辑运算符

    A

    B

    !A

    A&B

    A|B

    A^B

    A&&B

    A||B

    False

    false

    true

    false

    false

    false

    false

    false

    False

    true

    true

    false

    true

    true

    false

    true

    True

    false

    false

    false

    true

    true

    false

    true

    True

    true

    false

    true

    true

    false

    true

    true

     

     

     

     

     

     

     

     

    Eg:

    class Program

        {

            public static void Main()

            {

                int x = 1;

                int y = 2;

                int z = 3;

                bool u = false;

                u = !((x >= --y || y++ < z--) && y == z);

                Console.WriteLine(u);

    以上代码说明:

    将以上代码分解

    1.   a=   x>==--y 即1>=1 返回true;       b=   y++<z--  即3<2  返回false;

                A1=    a || b 即 true || false返回 true ;

         2.    B1=    y==zz 即2=3 返回 false;

         3.    !(A1 && B1)  即true && false  返回 false    !(false)=true 非假=真

    14.5优先级

    从高到低:一元运算符----二元运算符---关系运算符----逻辑运算符-----赋值运算符

    七、String

    1、字符串恒定性

    1) 字符串我们可以看成是一个字符数组。

    2) str.Length表示字符串里面字符的个数。

    3) 字符串对象一旦被创建,这个对象就不能被修改。

    4) 在创建一个字符串对象的时候,会先去字符串数据池(在堆中)寻找是否有相同的字符串内容的对象,如果有,就直接让变量指向这个对象,如果没有,就创建新的对象。

    2、字符串常用方法

    1) Compare方法

    参数条件

    返回值

    strA小于strB

    负整数

    strA等于strB

    0

    strA大于strB

    正整数

     

    2) Equals方法

    判断两个字符串是否相同, 如果相同返回值为true,否则为false

    实例:

                //string s1 = "a";

                //string s2 = "b";

                //Console.WriteLine(string.Equals(s1, s2));

        //Console.WriteLine(s1.Length);

    3定位字符串

    StartWith/EndWith

    判断一个字符串是否以一个字符串_开头(结尾),返回值true/false

    indexOf/LastindexOf

    某个指定的字符或字符串第一次(最后一次)出现的位置

     

    4截取字符串

    Substring

    5插入和填充字符串

    (1)insert方法

    string str1 = "hi";

             string str2 = "world";

             string str3=str1.Insert(1,str2);

          Console.WriteLine(str3);

    结果为:hworldi

    (2)PadLeft/PadRigth方法

             string str1=”hi”;

             string str2=str1.PadLeft(4,’@’);

             Console.WriteLine(str2);

             结果为:@@hi

      6删除和剪切字符串

          (1)Remove方法

            Remove(开始删除的位置,删除的数量)

    (2)Trim、TrimStart、TrimEnd方法

     Char[] str1={‘@’,’#’,’$’};

     string str2=”@China$#”;//

     string str3=str2.Trim(str1);

    Console.WriteLine(str3)

    结果为China

    Trim第一个用法是将字符串的两边空格去掉;

    Trim第二个用法是在第二个字符串STR2中去掉包括STR1符号后生成的值.

    (3)CopyTo方法

          string str1=”China”;

          char[]str2=new char[100];

          str1.CopyTo(0,str2,0,3);//要复制的字符的起始位置,目标数组,指定目标数组中开始存放的位置,要复制的字符个数

          Console.WriteLine(str2);

    结果为:Chi

       7替换字符串

    string str1=”hello”;

    string str2=str1.Replace(“ll”,”r”);

    Console.WriteLine(str2);

    结果为:hero

    8)format方法

    3StringBuilder

       方法一:结果与方法二相同,但这种方法很耗系统资源,建议不要使用.

    //string s1 = "aaa";

                //s1 += "bbb";

                //s1 += "cccc";

                //s1 += "dddd";

                //Console.WriteLine(s1);

       方法二:结果与方法一相同,这种方法最优化,建议使用.

             //string s1 = "aaaa";

                //StringBuilder sb = new StringBuilder();

                //sb.Append(s1);

                //sb.Append("vvvvvv");

                //sb.Append("dddddd");

                //Console.WriteLine(sb.ToString());

    另外字符常用方法:

    字符串变量传值:

         //string s1 = "a";

         //string s2 = "b";

         //string s = string.Format("大家好,小明今年{0}岁,小王今年{1}岁", s1, s2);

    将S1的值传递给{0},S2的值传递给{1},整合成一个新的字符串赋值给S 

    Foreach遍历数组的方法

    //string s = "a_b_c_d";

     //string[] aString = s.Split('_');

     //foreach (var a in aString)//遍历

     //{

      //    Console.WriteLine(a);

    //}

  • 相关阅读:
    NSString属性声明中的copy和retain区别
    Xcode6无法安装VVDocumenter插件的解决方法
    Xcode好用插件
    REVEAL APP for IOS 永久试用
    Foundation框架 ---- 结构体
    Foundation框架集合 ---- NSArray和NSMutableArray
    《 算法分析与设计》 实验一-分治算法
    B-浮点常量问题
    Servlet 404原因
    小C语言--词法分析程序
  • 原文地址:https://www.cnblogs.com/xiangqc/p/4715449.html
Copyright © 2011-2022 走看看