什么是类型转换
类型转换 就是不同变量类型之间的相互转换
隐式转换的基本规则--不同类型之间自动转换
大范围装小范围
有符号 long-->int-->short-->sbyte
无符号 ulong-->uint-->ushort-->byte
浮点数 decimal ? ?double-->float
特殊 decimal这个类型 没有办法用隐式转换的形式 去存储 double和float
无符号装有符号
有符号的变量 是不能够 隐式转换 无符号的
有符号装无符号
有符号变量 是可以 装 无符号变量的 前提是 范围一定要是涵盖的 存在隐式转换
浮点数装整数
整形转为浮点数 是存在隐式转换的
浮点数 是可以装载任何类型的 整数的
decimal 不能隐式存储 float和double
但是它可以隐式的存储整形
double-->float-->所有整形(无符号、有符号)
decimal-->所有整形(无符号、有符号)
整数装浮点数 整数不能隐式存储 浮点数 因为 整数 不能存小数
?特殊类型和其他类型之间
bool bool没有办法和其他类型 相互隐式转换
char char 没有办法隐式的存储 其他类型的变量
char类型 可以隐式的转换为 整数和浮点型
? ? ? ? ? ? ? ? 是将char转换为int
? ? ? ? ? ? ? ? char隐式转换成 数值类型是
? ? ? ? ? ? ? ? 对应的数字 其实是一 ASCII码
? ? ? ? ? ? ? ? 计算机里存储 2进制
? ? ? ? ? ? ? ? 字符 中文 英文 标点符号 在计算机中都是一个数字
? ? ? ? ? ? ? ? 一个字符 对应一个数字 ASCII码是一种对应关系
char c = 'A';
int i = c;
ConSole.WriteLine(i);
string 无法和其他类型进行隐式转换
总结 隐式转换 规则
? ? ? ? ? ? 高精度(大范围)装 低精度(小范围)
? ? ? ? ? ? double-->float-->整数(有符号、无符号)-->char
? ? ? ? ? ? decimal-->整数(有符号、无符号)-->char
? ? ? ? ? ? string 和bool 不参与隐式转换
作用 一般情况下 将高精度的类型强制转换为低精度
? ? ? ? ? ? 语法: 变量类型 变量名 = (变量类型)变量
? ? ? ? ? ? 注意: 精度问题 范围问题
括号强转 可能会出现范围问题 造成的异常
short s = 1;
int i = 2 ;
s = (short) i ;
在强转时 一定要注意范围 不然得到的结果 可能异常
浮点和整形 浮点数强转成整形时 会直接抛弃小数点后面的小数
char和数值类型
? ? ? ? ? ? int i2 = 'A';
? ? ? ? ? ? char c = (char)i2;
? ? ? ? ? ? Console.WriteLine(c);
bool和string 是不能够通过 括号强转的
作用 把字符串类型转换为对应的类型
语法:变量类型.Parse("字符串")
注意:字符串必须能够转换成对应类型 否则报错
int i4 = int.Parse("123");
Console.WriteLine(i4);
Console.WriteLine(sbyte.Parse("1"));
Console.WriteLine(long.Parse("123456"));
值的范围 必须是能够被变量存储的值 否则报错
? ? ? ? ? ? Console.WriteLine(byte.Parse("1"));
? ? ? ? ? ? Console.WriteLine(ushort.Parse("12"));
? ? ? ? ? ? Console.WriteLine(uint.Parse("123"));
? ? ? ? ? ? Console.WriteLine(ulong.Parse("1233445"));
? ? ? ? ? ? float f3 = float.Parse("1.3");
? ? ? ? ? ? double d3 = double.Parse("1.222");
? ? ? ? ? ? bool b5 = bool.Parse("true");
? ? ? ? ? ? Console.WriteLine(b5);
? ? ? ? ? ? char c2 = char.Parse("4");
? ? ? ? ? ? Console.WriteLine(c2);
作用 更准确的将 各类型之间进行相互转换
语法:Convert.To目标类型(变量或常量)
注意:填写的变量或常量必须正确 否则出错
转字符串 如果是把字符串转对应类型 那字符串一定要合法合规
?int a = Convert.ToInt32("12");
?Console.WriteLine(a);
精度比括号强转好一点 会四舍五入
?a = Convert.ToInt32(1.678f);
?Console.WriteLine(a);
把bool类型也可以转成 数值类型 true对应1 false对应0
? ? ? ? ? ? a = Convert.ToInt32(true);
? ? ? ? ? ? Console.WriteLine(a);
? ? ? ? ? ? a = Convert.ToInt32(false);
? ? ? ? ? ? Console.WriteLine(a);
?每一个类型都存在对应的 Convert中的方法
? ? ? ? ? ? sbyte sb5 = Convert.ToSByte("1");
? ? ? ? ? ? short s5 = Convert.ToInt16(1);
? ? ? ? ? ? int i5 = Convert.ToInt32("123");
? ? ? ? ? ? long l5 = Convert.ToInt64("1234");
? ? ? ? ? ? byte sb6 = Convert.ToByte("1");
? ? ? ? ? ? ushort s6 = Convert.ToUInt16(1);
? ? ? ? ? ? uint i6 = Convert.ToUInt32("123");
? ? ? ? ? ? ulong l6 = Convert.ToUInt64("1234");
? ? ? ? ? ? float f5 = Convert.ToSingle("134.3");
? ? ? ? ? ? double d5 = Convert.ToDouble("12.334");
? ? ? ? ? ? decimal de5 = Convert.ToDecimal("12.3456");
? ? ? ? ? ? bool bo5 = Convert.ToBoolean("true");
? ? ? ? ? ? char ch5 = Convert.ToChar('A');
? ? ? ? ? ? string str5 = Convert.ToString(1234);
? ? ? ? ? ? 作用:拼接打印
? ? ? ? ? ? 语法:变量.ToString();
? ? ? ? ? ? string str6 = 1.ToString();
? ? ? ? ? ? str6 = true.ToString();
? ? ? ? ? ? str6 = 'A'.ToString();
? ? ? ? ? ? str6 = 1.2f.ToString();
? ? ? ? ? ? int aa = 1;
? ? ? ? ? ? str6 = aa.ToString();
当我们进行字符串拼接时 就自动会调用 tostring 转成string
? ? ? ? ? ? Console.WriteLine("1234" + 1 + true);