笔记_05 类型转换

什么是类型转换?

类型转换就是不同变量类型之间的相互转换,隐式转换的基本规则就是不同类型之间自动转换,大范围装小范围

一、隐式转换

1、相同大类型之间的转换

(1)有符号:long、int、short、sbybe

eg:long l = 1;

     int i = 1;

     l=i;(隐式转换了,大范围装小范围)

     i=l(不行,不能小范围装大范围)

(2)无符号:ulong、uint、ushort、byte

与有符号同理

(3)浮点数:decimal、double、float

注意:decimal没办法用隐式转换的形式,存储double和float

double可以存float(同理)

(4)特殊类型:bool、char、string

不存在隐式转换

2、不同大类型之间的转换

(1)无符号装有符号

不能装,因为有符号的变量不能隐式转换成无符号的变量

(2)有符号装无符号

可以装,但有符号的存储范围一定要涵盖在无符号的存储范围内

(3)浮点数装整数

可以装任何类型的整数,decimal可以隐式存储整形

(4)整数装浮点数

不能装

3、特殊类型和其它类型之间

bool:bool没有办法和其它类型相互隐式转换

char:其它类型不能隐式转换为char类型,但char类型可以隐式转换为部分整数和浮点数类型,因为char类型是一个16位无符号整数,取值范围为0~65535,所以它可以隐式转换比它宽度更大的数值类型,如int、long、ushort、ulong等

string:string没有办法和其它类型相互隐式转换

———————————————————————————————————————————

总结:高精度(大范围)装低精度(低范围)

double——>float——>整数——>char

decimal——>整数——>char

string和bool不参与隐式转换规则

———————————————————————————————————————————

二、显示转换

显示转换:手动处理,强制转换

1、括号强转

作用:一般情况下,将高精度的类型强制转换为低精度

语法:变量类型 变量名 = (变量类型)变量;

注意:精度问题,范围问题

(1)相同大类型的整形

有符号整形:short s = 1;        int i = 1;      s=(short)i;    ——>将i强制转换为short类型

注意:括号强转可能会出现范围问题,造成数据异常

(eg:如果上面的i=40000超出了short类型的存储范围,强制转换后short装的i的值会变成-25536,就不是40000了)

无符号整形:byte b=1;    uint ui = 1;     b=(byte)ui;

(2)浮点之间

float f = 1.1f;      double d = 102f;     f=(float)d;

注意:大范围浮点数类型变量如果强转成小范围浮点数变量,则精度会变成小范围变量类型的精度

(3)无符号和有符号

uint ui2 =1;     int i2 = 1;   ui2=(uint)i2;

如果i2=-1,强转会异常(变量存储范围一定要注意)

(4)浮点和整形

这个强转会有精度问题(浮点数强转整形会直接抛弃小数点后面的数字)

(5)char和数值类型

(6)bool和string

两者都不能通过括号强转(bool X,string X)

2、parse法

作用:把字符串类型转换为对应的类型

语法:变量类型.Parse("字符串");

注意:字符串必须能够转换为对应类型,否则报错

(1)有符号

int i =int.Parse("123");

int i =int.Parse("123.45");——>报错!填写的字符串必须要能转成对应类型的字符,范围也必须是要能被变量存储的值,否则不符合规则会报错

(2)无符号同理

(3)浮点数同理

(4)特殊类型

bool b=bool,Parse("ture");

3、Convert法

作用:更精确的将各个类型之间进行相互转换

语法:Convert.To目标类型(变量或常量)

注意:填写的变量或常量必须正确,否则出错

(1)转字符串

int a = Convert.ToInt32("12");      打印结果是:12

int a = Convert.ToInt32("12.21");  ——>报错

(2)转浮点数

int a = Convert.ToInt32(1.1556);    打印结果:1(会四舍五入,如果括号里是1.512,打印结果为2,意味着Convert法精度更高) 

(3)转特殊类型

int a = Convert.ToInt32(true);    打印结果:1(bool类型也能用此方法强转,注意true对应1,false对应0)

注意Convert类的方法名,每一种转换类型的方法名有所不同

 

4、其他类型转string

作用:拼接打印

语法:变量.ToString();

 上图进行字符串拼接时,会“1”和“true”会自动调用ToString方法

(上传截图多方便啊!才发觉!!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值