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类下面的一个方法

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

时间: 2024-10-10 08:40:01

20151026c#2的相关文章