• 20151026c#2


    变量是内存里存储的,运行在cpu里的。

    数据类型

    值类型:所有的数值类型都是值类型(short int long float double、bool)、枚举、结构

    引用类型:对象、字符串、object、数组

    区别:

    1、值类型

        class Program
        {
            static void Main(string[] args)
            {
                
                int i = 10;
                int j = i;
                i = 20;
                Console.WriteLine(j);
    
            }
        }

    所有的值类型是储存在栈里的,

    值类型的赋值就是值的拷贝

    j是没有变化的

    2、引用类型

        class Program
        {
            static void Main(string[] args)
            {
               
                string s1 = "aa";
                string s2 = s1;
                s1 = "bb";
                Console.WriteLine(s2);
    
            }
        }

    引用类的值是储存在堆里面的,栈里面储存的只是它的引用地址。

    引用类型的赋值,实际上就是地址的拷贝

    s2也是没有变化的。

    静态成员

    要去调用一个类里面的非静态成员(字段、方法),需要通过类的一个对象调用。

    1、当实例化一个类的对象,堆里面会将类里面的所有非静态成员(变量、方法)生成

    2、当实例化一个类的对象,首先会在堆里检索该类的对象是否存在,如果在在就会重新拷贝一份。

        class Person1
        {
            public string name = "A";
            public int age = 20;
        }
    
    class Program
        {
            static void Main(string[] args)//程序入口
            {
    
                Person1 p1 = new Person1();
                Console.WriteLine(string.Format("年龄是{0},姓名是{1}", p1.age, p1.name));//调用对象字段 可以写为静态字段就可以用类调用了。
                Console.ReadKey();
            }
        }

    要去调用一个类里的静态成员,只需要通过类去调用。

        class Person
        {
            
            public static int i = 10;
           
            public static void SayHello()
            {
                Console.WriteLine("大家好");
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(Person.i);
                Person.SayHello();
                Console.ReadKey();
            }
        }

    比如:教室类  同学对象

    使用某个同学的文具盒就需要通过对象调用

    使用教室里公共的工具 拖把、扫帚 就通过为可以调用

     未将对象引用到对象的实例

    Person p1=null;

    引用p1.age p1.name就会出现该错误 需要判断对象是否为空 调试时要查看对象为什么为空

    尽可能的避免装箱拆箱 (苹果-苹果  苹果-打包-拆包-苹果)

    装箱

    把值类型变为引用类型

    int i1 = 10;
    string s3 = i1.ToString();

    拆箱

    把引用类型变为值类型

    string s4 = "10";
    int i2 = Convert.ToInt32(s4);

    成员变量(全局变量):写在类的里面,方法的外面

    局部变量 写在方法的里面

    静态变量 static

    数据类型转换

    隐式转换 低精度转高精度型

    int i=10;

    double d=Convert.ToDouble(i);

    显示式转换 高精度型转低精度型(数据会损耗)

    double d=10.45;

    int i=Conver.ToInt32(d);

    运算符

    算术运算符:和JS相同 +-*/% ++ --

    赋值运算符:= += -= /= *= %= ??

    ?: js

    int i5 = 2 > 3 ? 10 : 20; 2>3吗,如果成立取值10 不成立 取20

    ??

    a=b??c b等于空吗?等于a=c 不等于a=b

    string s5 = null;
    string s6 = "aaa";
    string s7=s5??s6; s5等于空吗?如果不等于取值s5 如果等于取值s6

    关系运算符 == !== < > <= >=

    逻辑运算符 ||或   &&与  !非(取反)

    String类

    定义特点

    1、字符的数组

    把一个字符串转化为字符的数组,并打印

           string s = "dfdfdf";
                char[] a = s.ToCharArray();
    
                for (int i = 0; i < a.Length; i++)
                {
                    Console.WriteLine(a[i]);
                    
                }

    2.获取字符的长度 str.length;

    3、字符串一创建,就不能被修改,重新获取时会在堆里创建一个。

    4、s2=s1时,会在堆里拷贝一份。

    方法

    Compare方法

    字符串对应ascii码的顺序

    Console.WriteLine(string.Compare("a","bbbbb"));1

    Equals 判断是否相等

    Console.WriteLine(string.Equals("aa","aa"));

    StartWith/EndWith判断一个字符串是否以一个字符串开头 结尾 返回值true/false

    string s = "aabbcc";
    Console.WriteLine(s.StartsWith("aabb")); 返回true

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

    string s = "aabbcc";
    Console.WriteLine(s.IndexOf("d")); 返回-1

    Console.WriteLine(s.IndexOf("b")); 返回索引2

    SubSrting截取字符串

    string s = "aabbcc";
    Console.WriteLine(s.Substring(3));返回bbc

    Console.WriteLine(s.Substring(3,1));返回b

    insert 插入字符

    string s = "aabbcc";
    Console.WriteLine(s.Insert(3,"1"));返回aab1bcc

    padleft padright  补齐字符串

     string s = "aabbcc";
     Console.WriteLine(s.PadLeft(10,'@'));返回@@@@aabbcc

    Remove方法 删除和剪切字符串

    string s = "aabbcc";
    Console.WriteLine(s.Remove(1,1));返回abbcc 开始删除的位置,删除的数量

    Trim去掉前后的空格

    string s = " aabbcc ";
    Console.WriteLine(s.Trim());返回aabbcc

    去掉数组里的某个字符

    Char[] str1 = {' ', '@', '#', '$' }; //必须要加空格
    string str0="@#$ "; //必须要加空格
    string str2 = " @China$# ";
    string str3 = str2.Trim(str1);
    string str4 = str2.Trim(str0.ToCharArray());
    Console.WriteLine(str3);//返回China
    Console.WriteLine(str4);//返回China

    TrimSart去掉前面的空格 TrimEnd  去掉后面的空格

    string str1 = "  dfdf ";
    Console.WriteLine(str1.TrimStart());返回 dfdf空格 
    Console.WriteLine(str1.TrimEnd());返回 空格dfdf

    CopyTo方法 复制字符串

    string str1 = "dfdf";
    char[] str2 = new char[100];
    str1.CopyTo(1, str2, 0, 3);//str1[1]  str2  str2[0] str2[3]
    Console.WriteLine(str2);//返回fdf

    Replace 替换字符串

    Console.WriteLine(("dfdfd").Replace("d","1").Replace("1","2"));返回22d

    Format把一个内容传到字符串里

    Console.WriteLine(string.Format("'{0}'","abc")); 返回'abc'

    Console是System下面的一个类

    WriteLine是Console类下面的一个方法

    当一个类是静态的,所有的内容都是静态的

  • 相关阅读:
    端口
    log4j常用配置以及日志文件保存位置
    jbpm node signal
    JBPM3.2 TABLE
    JBPM TaskInstance 对象创建过程
    【转】链接脚本
    快速平方根倒数
    GPS开发之知识储备(NMEA0183)
    HEX文件格式和其校验算法
    NRF51822之IIC(MEMS_LIS2DH12)
  • 原文地址:https://www.cnblogs.com/16lily521/p/4929508.html
Copyright © 2020-2023  润新知