• 欢迎光临~

NET第一章:数据类型与转换

开发技术 开发技术 2022-10-06 次浏览
vs快捷键:Ctrl+J 快捷键能够打开代码提示框  ; F12 快速转到定义。

一、数据类型

int i = 100; //整型
float f = 10.00f;//小数浮点型默认是double类型,需要加f强制转换为float。或:float f = (float)10.00;一样的.
double d = 10.00;//float:单精度4字节,因为正负号显示7位数,double:双精度8字节,显示15位有效数,float执行优于double
decimal m = 1.55m;//存金钱的类型。小数点后面可以跟到28到29位。小数后面必须跟m。不然就会认为是double类型了。
char c = '';//单个字符,运行快,必须单引号,不能为空
string s = "fadfwa";//字符串,必须双引号,可以为空
bool b = true;//布尔类型,有两个值:真true,假false。

const double R = 3.14;//常量const,如:圆周率=3.14 一直保持不变, 而已整个程序中常量不能被重新赋值,重新给常量赋值就报错。
i = default;//而变量可以被重新赋值。default是默认值
Console.WriteLine(i); //默认值有两种用法
Console.WriteLine(default(string));//输出字符串的默认值

//匿名变量:可以是任意类型(具有动态类型的特征,不需要明确指定类型,减少代码量,提高效率) 但定义变量时必须赋值明确变量数据类型。
var v = "隐式类型";//也叫万能数据类型,匿名函数,根据值来决定变量的数据类型,值是字符串,变量就是字符串,如果整型就是整型,必须赋值没默认值。
var v2 = new List<string>() { "1", "2", "3" };
Console.WriteLine(v.GetType().Name);//读取变量的数据类型
Console.WriteLine(v2.GetType().Name);

科学计数法:如3.14E2 =3.14 x 10二次方,E后面是几就是几次方,表格经常看到

转义字符:
  n:表示换行,rn:Windows不认识n只认识rn ,其他系统认识n,新版net6.0也认识
  t:表示tab建的空格。b:表示退格键,放在字符串两边没效果。":表示可以在字符串输出引号。
  \:表示取消的转义作用输出一个路径的时候用,另外如果麻烦的换行@"字符串路径"就不需要添加只要在字符串前面加@符号,告诉双引号里面是字符串,字符串就会原样输出,这种方法叫逐字字符串:就是说@“冒号里面的直接认为是字符串”

string stss = " Hello thisn isr a ttest";//转义字符/n是换行在苹果系统和控制台有用,但是打印到Windows系统文本里没效果的必须要rn才能换行。
Console.WriteLine(stss + "输出斜杠:\" + @"这种也能识别斜杠:D:abc");

 二、字符串的截取

using System.Text.RegularExpressions;//正则表达式方法Regex.Replace()所在的命名空间

string str = " Hello thisn isr a ttest";
Console.WriteLine(str.StartsWith(" Hello"));//判断是否以Hello字符串开始
Console.WriteLine(str.EndsWith("Hello"));//判断是否以Hello字符串结束
Console.WriteLine(str.Contains("Hello"));//判断字符串中是否包含指定字符串,只要出现就返回true
Console.WriteLine(str.Equals("Hello"));//完全等价于关系运算符的 str == "hello" 是否完全相等,返回true/false
Console.WriteLine(str.IndexOf("lo")); //索引小标位置, 类似于模糊查询,通常用作判断 str.IndexOf("lo") > -1 表示索引不到值,不存在
Console.WriteLine(str.LastIndexOf("lo"));//和上面一样也是索引,返回的是最后一个出现的位置
Console.WriteLine(str.IndexOf("lo", 2));//从第二个下标开始查找
Console.WriteLine(str.Insert(2, "你好!"));//在第二个下标位置插入 你好
Console.WriteLine(str.Remove(2, 3));//删除字符串Remove(开始, 结束) 也可以只有一个开始下标 Remove(开始) 默认结束是最后。也就是开始后面的全部删除。
Console.WriteLine(str.Substring(2, 3));//截取字符Substring(开始,结束) 也可以只有一个开始下标 Substring(开始) 默认结束是最后。
Console.WriteLine(str.Replace("llo", "aaa"));//替换字符
Console.WriteLine(str.ToLower());//字符串转小写
Console.WriteLine(str.ToUpper());//字符串转大写
Console.WriteLine(str.Trim());//清楚字符串的左右两边空格
Console.WriteLine(str.TrimStart());//清楚字符串的前面空格
Console.WriteLine(str.TrimEnd());//清楚字符串的后面空格
Console.WriteLine(Regex.Replace(str, @"s", ""));//利用正则表达式清楚字符串所有空格

//用法
string url = "http://www.baidu.com/index.html";
Console.WriteLine("网址中的协议是:" + url.Substring(0, url.IndexOf(":")));
Console.WriteLine("网址中的协议是:" + url.Substring(url.LastIndexOf("/") + 1));
if (!string.IsNullOrEmpty(str))//判断字符串释放有值,可以可以判断空值null或者“” ,这里判断字符串是否为空,加!表示非空。
{
    string[] arr = str.Split(' ');//拆分字符串,以空格拆分 
    Console.WriteLine("arr数组长度为:{0}", arr.Length);//同样字符串也有长度
    foreach (string itme in arr)
    {
        Console.WriteLine(itme);
    }
    Console.WriteLine(string.Join(":", arr));//把一维数组里面的值链接成字符串
}
Console.ReadKey();//读取一个键,下面是读取一行。可以用变量来接收,字符串类型。
Console.ReadLine();//这里利用接收输入来暂停程序,避免程序一闪而过

三、数据类型转换

推荐使用c#给我们的万能转换器:Convert.数据类型(需要被转换的值);

int num = 102;//定义变量还可以这样写 int a,b=1; 数据类型一样可以这样定义 a没有赋值,b赋值了1
string strnum = num + ""; //等价于 num.ToString(); 需要转换的值.To数据类型(),+号起到连接字符串的作用,当两边都是数字起到相加的作用。
num = int.Parse(strnum); // 数据类型.Parse(需要转换的值)

//万能转换Convert:上面这种灵活性不够,所以尽量使用万能转换器Convert,他是一个转换工厂
num = Convert.ToInt32(strnum); //数据类型的基类  Convert.ToString(111); 就强制转换为字符串了

//还有一种强制类型转换:将大类型转换成小类型,这种任意丢失数据 ,了解就好不建议使用  建议使用万能转换器Convert
double x = 12.36; //可以存整数也可以存小数。小数点后面是15到16位。
int y = (int)x;//不建议使用,说一下这种是强制类型转换也叫显示类型转换。大转小用
double nu11 = num;//这种就是自动转换也叫隐示转换,小转大用

char sex = '';
string str = sex.ToString();
char[] chs = "abcdefg".ToCharArray();//将字符串转换为char数组,通过下标索引来换取每个字母。
chs[0] = 'd';//相当于把字符串第一个字母a改成d
string s = new string(chs); //把char数组转换为字符串。当然普通字符串也可以看做char类型的只读数组。
Console.WriteLine(s[0]);//既然可以将string看做char类型的只读数组,那么就可以通过下标索引字符串的某个元素。
Console.WriteLine(s);

//布尔类型返回值是true和false常用于if判断里面。
bool tr = int.TryParse("字符串转成功返回1失败为0赋值给变量num", out num);//TryParse方法是尝试将字符串转换成整形。
Console.WriteLine("布尔值:{0},转换的整数值为:{1}", tr, num);//如果转换成功就赋值否则就是0

四、运算符

在计算机中++或--是一元运算符,而+-*/%是二元预算法,计算机会先执行一元在算二元预算法。
int a = 5;
int b = a++ + ++a * 2 + --a + a++;//5+7*2+6+6=31 这里a++ 先赋值在执行a+1,而++a 是先+1在赋值给a
Console.WriteLine("b的结果为:" + b + ",而a的结果为:" + a);//b=31,a=7
Console.WriteLine(a += b);//a+=b等同于 a=a+b
Console.WriteLine(5%2);//相当于5除以2取余数。5/2余数是1,所以值为1

五、随机数因子与两种输出变量的形式及常量的定义

Random rd = new Random();//随机数因子,实例化对象:由类转换成一个对象的过程,关键字new 语法:类名 对象名 =new 类名(); 此时类就变成了一个具体的对象。
int rrr = rd.Next(1, 10);//表示1-(10-1)的随机数, 访问类的成员:对象名.成员名来访问的
const string st = "常量关键字const程序执行结束都不发生改变,只能被赋值一次,而且定义了就必须赋值,比如圆周率=3.14不会改变";
Console.WriteLine("输出随机数:" + rrr);
Console.WriteLine("占位符输出:{0},{1}", rrr, st);//如果多变量从{0}{1}...开始索引每个变量

六、访问修饰符和静态变量

4种访问修饰符
  public:公共的,所有程序集都可以访问(其他程序集访问需要引入命名空间才可以)
  internal:内部的,当前程序集可以访问
  protected:受保护的,当前类和子类可以访问,子类实例化对象时点不出来。但是可以访问。不会报错,相当于隐藏了属性。
  private:私有的,只能是当前类可以访问
类的访问修饰符(两种):public internal(默认)
类的成员(方法和变量)访问修饰符(4种):public internal protected private(默认)

首先了解一下:所为对象指的是类,成员指的是方法和变量。
  类分两种:实体类和静态类
  区别:静态类中所有成员必须是静态的且不能被继承;非静态类中不受限制,可以是静态也可以是实体成员(指方法或变量),可以被继承。
  调用:静态调用不需要实例化对象,即:类名.方法()或变量。实体类必须实例化对象:【类名 对象名 =new 类名() 】新版本支持【类名 对象名 =new()】,才能用【对象名.成员名】调用。
  静态:表示一个公共的存储区域,每次调用都是最新的一次赋值,值到所有程序关闭结束。关键字:static
  非静态:每次调用结束都会被初始化,垃圾回收。

Test t = new Test();//实例化对象
Console.WriteLine(t.i++ +"静态变量:"+Test.I2++);//同时给两个变量都加1

Test t2 = new(); //新版本可以这样实例化对象
Console.WriteLine(t2.i + "静态变量:" + Test.I2);//每次调用:非静态被初始化,静态类会记录最后一次数据。

public class Test
{
    public int i = 1;//非静态变量,另外变量在类里叫全局,在方法里叫局部
    static int i2 = 1;//静态变量
    public static int I2 {  //因为字段默认受守护的,外部不能随意访问,所以需要给字段添加属性,严格规范:赋值给属性,属性赋给字段。
        get { return i2; }
        set { i2 = value; } 
    }
}

 


  

程序员灯塔
转载请注明原文链接:NET第一章:数据类型与转换
喜欢 (0)