11.显式转换

11.类型转换-显式转换


11.1 知识点

显示转换

显示转换其实就是手动处理,强制转换类型。

括号强转

// 作用:一般情况下,将高精度的类型强制转换为低精度
// 语法:变量类型 变量名 = (变量类型)变量;

// 注意:精度问题、范围问题

// 相同大类的整形的转换

// 有符号整形
sbyte sbyteValue = 1;
short shortValue = 1;
int intValue = 40000;
long longValue = 1;

shortValue = (short)intValue; // 括号强转可能会出现范围问题造成的异常
Console.WriteLine(shortValue); // -25536

intValue = (int)longValue;
sbyteValue = (sbyte)shortValue;
sbyteValue = (sbyte)intValue;
sbyteValue = (sbyte)longValue;

// 无符号整形
byte byteValue = 1;
uint uintValue = 1;
byteValue = (byte)uintValue;
Console.WriteLine(byteValue); // 1

// 浮点之间
float floatValue = 1.1f;
double doubleValue = 1.1234567890123456789f;

floatValue = (float)doubleValue; // 会只保留float的精度,舍弃double后面的精度
Console.WriteLine(floatValue); // 1.1234568

不同类型的转换

无符号和有符号
// 无符号和有符号
uint uintValue2 = 1;
int intValue2 = -1;

uintValue2 = (uint)intValue2; // 在强转时一定要注意范围,不然得到的结果可能有异常
Console.WriteLine(uintValue2); // 4294967295

intValue2 = (int)uintValue2;
浮点和整形
// 浮点和整形
// 浮点数强转成整形时,会直接抛弃掉小数点后面的小数,不会四舍五入
intValue2 = (int)1.64f;
Console.WriteLine(intValue2); // 1
char和数值类型
// char和数值类型
intValue2 = 'A';
char charValue = (char)intValue2;
Console.WriteLine(charValue);

注意:bool和string是不能够通过括号强转的。

Parse法 字符串转对应类型

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

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

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

Parse法的转换规则

// 我们填写字符串必须是要能够转成对应类型的字符,如果不符合规则,会报错
// int intValue3 = int.Parse("123.45"); // 报错,转换失败
// Console.WriteLine(intValue3);

// 值的范围必须是能够被变量存储的值,否则报错
// short shortValue2 = short.Parse("40000");
// Console.WriteLine(shortValue2);

Parse法把字符串转换为对应的类型

// 有符号
string stringValue3 = "123";
int intValue4 = 123;

// 可以直接传,不用传变量,填写的字符串符合规则可以转换
intValue4 = int.Parse("123");
Console.WriteLine(intValue4); // 123

sbyte sbyteValue3 = sbyte.Parse("1");
Console.WriteLine(sbyteValue3); // 1

// 他们的意思是相同的
Console.WriteLine(sbyte.Parse("1")); // 1
Console.WriteLine(long.Parse("123123")); // 123123

// 无符号
Console.WriteLine(byte.Parse("1")); // 1
Console.WriteLine(ushort.Parse("1")); // 1
Console.WriteLine(ulong.Parse("1")); // 1
Console.WriteLine(uint.Parse("1")); // 1

// 浮点数
float floatValue3 = float.Parse("1.2323");
double doubleValue3 = double.Parse("1.2323");

// 特殊类型
bool boolValue2 = bool.Parse("true");
Console.WriteLine(boolValue2); // True

char charValue2 = char.Parse("A");
Console.WriteLine(charValue2); // A

Convert法 准确转换成目标类型

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

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

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

转字符串
// 转字符串
// 如果是把字符串转对应类型,那字符串一定要合法合规
int a = Convert.ToInt32("12");
Console.WriteLine(a);

// 精度更准确
// 精度比括号强转好一点,会四舍五入
a = Convert.ToInt32(1.45845f);
Console.WriteLine(a); // 1

// 特殊类型转换
// 把bool类型也可以转成数值类型,true对应1,false对应0
a = Convert.ToInt32(true);
Console.WriteLine(a); // 1
a = Convert.ToInt32(false);
Console.WriteLine(a); // 0
a = Convert.ToInt32('A');
Console.WriteLine(a); // 65
有符号
// 有符号
sbyte sbyteValue5 = Convert.ToSByte("1");
short shortValue5 = Convert.ToInt16("1");
int intValue5 = Convert.ToInt32("1");
long longValue5 = Convert.ToInt64("1");
无符号
// 无符号
byte byteValue5 = Convert.ToByte("1");
ushort ushortValue5 = Convert.ToUInt16("1");
uint uintValue5 = Convert.ToUInt32("1");
ulong ulongValue5 = Convert.ToUInt64("1");
浮点型
// 浮点型
float floatValue5 = Convert.ToSingle("13.2");
double doubleValue5 = Convert.ToDouble("13.2");
decimal decimalValue5 = Convert.ToDecimal("13.2");
特殊类型
// 特殊类型
bool boolValue5 = Convert.ToBoolean("true");
char char

Value5 = Convert.ToChar("A");
string stringValue5 = Convert.ToString(123123);

其它类型转string

作用: 拼接打印。

语法: 变量.toString();

// 其它类型转string
string stringValue6 = 1.ToString();
stringValue6 = true.ToString();
stringValue6 = 'A'.ToString();
stringValue6 = 1.2f.ToString();

int aa = 1;
stringValue6 = aa.ToString();

bool bo6 = true;
stringValue6 = bo6.ToString();

// 当我们进行字符串拼接时就自动会调用tostring转成string
Console.WriteLine("123123" + 1 + true); // 1231231True

stringValue6 = "123123" + 1 + true + 1.23;
Console.WriteLine(stringValue6); // 1231231True1.23

11.2 知识点代码

using System;

namespace Lesson08_类型装换_显示转换_
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("类型转换——显示转换");

            //显示转换其实就是手动处理,强制转换类型

            #region 知识点一 括号强转
            // 作用 一般情况下 将高精度的类型强制转换为低精度
            // 语法: 变量类型 变量名 = (变量类型)变量;
            // 注意: 精度问题 范围问题


            //相同大类的整形的转换

            //有符号整形
            sbyte sbyteValue = 1;
            short shortValue = 1;
            int intValue = 40000;
            long longValue = 1;
            shortValue = (short)intValue;//括号强转 可能会出现范围问题 造成的异常
            Console.WriteLine(shortValue);//-25536
            intValue = (int)longValue;
            sbyteValue = (sbyte)shortValue;
            sbyteValue = (sbyte)intValue;
            sbyteValue = (sbyte)longValue;

            //无符号整形 
            byte byteValue = 1;
            uint uintValue = 1;
            byteValue = (byte)uintValue;
            Console.WriteLine(byteValue);//1

            //浮点之间
            float floatValue = 1.1f;
            double doubleValue = 1.1234567890123456789f;
            floatValue = (float)doubleValue;//会只保留float的精度 舍弃double后面的精度
            Console.WriteLine(floatValue);//1.1234568


            //不同类型的转换

            //无符号和有符号
            uint uintValue2 = 1;
            int intValue2 = -1;
            uintValue2 = (uint)intValue2;//在强转时 一定要注意范围 不然得到的结果 可能有异常
            Console.WriteLine(uintValue2);//4294967295
            intValue2 = (int)uintValue2;

            //浮点和整形
            //浮点数强转成整形时 会直接抛弃掉小数点后面的小数 
            //不会四舍五入
            intValue2 = (int)1.64f;
            Console.WriteLine(intValue2);//1

            //char和数值类型
            intValue2 = 'A';
            char charValue = (char)intValue2;
            Console.WriteLine(charValue);

            //bool和string 是不能够通过 括号强转的
            bool boolValue = true;
            //int intValue3 = (bool)boolValue;//报错
            string stringValue = "123";
            //intValue3 = (int)stringValue;//报错

            #endregion

            #region 知识点二 Parse法
            //作用  把字符串类型转换为对应的类型
            //语法: 变量类型.Parse("字符串")
            //注意: 字符串必须能够转换成对应类型 否则报错


            //Parse法的转换规则

            //我们填写字符串 必须是要能够转成对应类型的字符 如果不符合规则 会报错
            //int intValue3 = int.Parse("123.45");//报错 转换失败
            //Console.WriteLine(intValue3);

            //值的范围 必须是能够被变量存储的值 否则报错
            //short shortValue2 = short.Parse("40000");
            //Console.WriteLine(shortValue2);


            //Parse法把字符串转换为对应的类型
            //有符号
            string stringValue3 = "123";
            int intValue4 = 123;
            //intValue4 = int.Parse(stringValue3);
            //可以直接传 不用传变量 填写的字符串符合规则 可以转换
            intValue4 = int.Parse("123");
            Console.WriteLine(intValue4);//123;
            sbyte sbyteValue3 = sbyte.Parse("1");
            Console.WriteLine(sbyteValue3);//1
            //他们的意思是相同的 
            Console.WriteLine(sbyte.Parse("1"));//1
            Console.WriteLine(long.Parse("123123"));//123123

            //无符号
            Console.WriteLine(byte.Parse("1"));//1
            Console.WriteLine(ushort.Parse("1"));//1
            Console.WriteLine(ulong.Parse("1"));//1
            Console.WriteLine(uint.Parse("1"));//1

            //浮点数
            float floatValue3 = float.Parse("1.2323");
            double doubleValue3 = double.Parse("1.2323");

            //特殊类型
            bool boolValue2 = bool.Parse("true");
            Console.WriteLine(boolValue2);//True
            char charValue2 = char.Parse("A");
            Console.WriteLine(charValue2);//A
            //没有string.Parse这个方法 没有必要 直接赋值就行


            #endregion

            #region 知识点三 Convert法
            //作用  更准确的将 各个类型之间进行相互转换 
            //语法: Convert.To目标类型(变量或常量)
            //注意: 填写的变量或常量必须正确 否则出错

            //转字符串 如果是把字符串转对应类型 那字符串一定要合法合规
            int a = Convert.ToInt32("12");
            Console.WriteLine(a);//12

            //精度更准确
            //精度比括号强转好一点 会四舍五入
            a = Convert.ToInt32(1.45845f);
            Console.WriteLine(a);//1

            //特殊类型转换
            //把bool类型也可以转成 数值类型 true对应1 false对应0
            a = Convert.ToInt32(true);
            Console.WriteLine(a);//1
            a = Convert.ToInt32(false);
            Console.WriteLine(a);//0
            a = Convert.ToInt32('A');
            Console.WriteLine(a);//65

            //每一个类型都存在对应的 Convert中的方法
            sbyte sbyteValue5 = Convert.ToSByte("1");
            short shortValue5 = Convert.ToInt16("1");
            int intValue5 = Convert.ToInt32("1");
            long longValue5 = Convert.ToInt64("1");

            byte byteValue5 = Convert.ToByte("1");
            ushort ushortValue5 = Convert.ToUInt16("1");
            uint uintValue5 = Convert.ToUInt32("1");
            ulong ulongValue5 = Convert.ToUInt64("1");

            float floatValue5 = Convert.ToSingle("13.2");
            double doubleValue5 = Convert.ToDouble("13.2");
            decimal decimalValue5 = Convert.ToDecimal("13.2");

            bool boolValue5 = Convert.ToBoolean("true");
            char charValue5 = Convert.ToChar("A");

            string stringValue5 = Convert.ToString(123123);

            #endregion

            #region 知识点四 其它类型转string
            // 作用:拼接打印
            // 语法:变量.toString();

            string stringValue6 = 1.ToString();
            stringValue6 = true.ToString();
            stringValue6 = 'A'.ToString();
            stringValue6 = 1.2f.ToString();

            int aa = 1;
            stringValue6 = aa.ToString();
            bool bo6 = true;
            stringValue6 = bo6.ToString();

            //当我们进行字符串拼接时 就自动会调用 tostring 转成string
            Console.WriteLine("123123" + 1 + true);//1231231True

            stringValue6 = "123123" + 1 + true + 1.23;
            Console.WriteLine(stringValue6);//1231231True1.23

            #endregion
        }
    }
}

11.3 练习题

显示类型转换的几种方式

1. 括号强转

// 1. 括号强转 数值之间的转换 低精度 装 高精度
// 注意精度丢失问题和超出范围转换异常的问题

int intValue = 1;
long longValue = 1;

intValue = (int)longValue;

float floatValue = 1.1f;
double doubleValue = 1.231231231231231231231;

floatValue = (float)doubleValue;

2. Parse法

// 2. Parse法 把字符串 转成 对应的类型 变量类型.Parse(字符串)
// 要能转换成对应类型且不超出范围 否则报错

intValue = int.Parse("123");

3. Convert法

// 3. Convert法
// 填写的变量或常量必须正确 否则出错

intValue = Convert.ToInt32(12.23123);
intValue = Convert.ToInt32("123123");

string str = Convert.ToString(123123);

4. ToString法

// 4. ToString法

str = 1.ToString();
str = 1.23123f.ToString();

将24069转成字符,并打印

char charValue = (char)24069;
Console.WriteLine(charValue);// 帅

charValue = Convert.ToChar(24069);
Console.WriteLine(charValue);//帅

提示用户输入姓名、语文、数学、英语成绩,并将输入的3门成绩用整形变量存储

Console.WriteLine("请输入你的姓名");

// 通过字符串变量 把输入内容存起来
string stringValue2 = Console.ReadLine();

Console.WriteLine("请输入你的语文成绩");
stringValue2 = Console.ReadLine();

// 再把字符串转为 想要的类型
int yuWen = int.Parse(stringValue2);

Console.WriteLine("请输入你的数学成绩");
stringValue2 = Console.ReadLine();
int shuXue = int.Parse(stringValue2);

Console.WriteLine("请输入你的英语成绩");
stringValue2 = Console.ReadLine();
int yingYu = int.Parse(stringValue2);

Console.WriteLine("你的语文成绩:" + yuWen);
Console.WriteLine("你的数学成绩:" + shuXue);
Console.WriteLine("你的英语成绩:" + yingYu);

11.4 练习题代码

using System;

namespace Lesson08_练习题
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("类型转换——显示转换练习题");

            #region 练习题一
            //显示类型转换有几种方式?他们分别是什么,请举例说明?

            // 1.括号强转 数值之间的转换 低精度 装 高精度
            // 注意精度丢失问题和超出范围转换异常的问题
            int intValue = 1;
            long longValue = 1;
            intValue = (int)longValue;

            float floatValue = 1.1f;
            double doubleValue = 1.231231231231231231231;
            floatValue = (float)doubleValue;

            // 2.Parse法 把字符串 转成 对应的类型 变量类型.Parse(字符串)
            // 要能转换成对应类型且不超出范围 否则报错
            intValue = int.Parse("123");

            // 3.Convert法
            //填写的变量或常量必须正确 否则出错
            intValue = Convert.ToInt32(12.23123);
            intValue = Convert.ToInt32("123123");
            string str = Convert.ToString(123123);

            // 4.toString法
            str = 1.ToString();
            str = 1.23123f.ToString();
            #endregion

            #region 练习题二
            //请将24069转成字符,并打印

            char charValue = (char)24069;
            Console.WriteLine(charValue);//帅

            charValue = Convert.ToChar(24069);
            Console.WriteLine(charValue);//帅

            #endregion

            #region 练习题三
            //提示用户输入姓名、语文、数学、英语成绩,并将输入的3门成绩用整形变量存储

            Console.WriteLine("请输入你的姓名");
            //通过字符串变量 把输入内容存起来
            string stringValue2 = Console.ReadLine();

            Console.WriteLine("请输入你的语文成绩");
            stringValue2 = Console.ReadLine();
            //再把字符串转为 想要的类型
            int yuWen = int.Parse(stringValue2);

            Console.WriteLine("请输入你的数学成绩");
            stringValue2 = Console.ReadLine();
            int shuXue = int.Parse(stringValue2);

            Console.WriteLine("请输入你的英语成绩");
            stringValue2 = Console.ReadLine();
            int yingYu = int.Parse(stringValue2);

            Console.WriteLine("你的语文成绩:" + yuWen);
            Console.WriteLine("你的数学成绩:" + shuXue);
            Console.WriteLine("你的英语成绩:" + yingYu);
            #endregion
        }
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏