C#语言入门

游戏之路语言篇之数据类型转化--002

2019-03-27  本文已影响0人  HeavenOrSky

老酷:小伙儿,消化的怎么样了?
小奇:那点东西能难倒我么?
老酷:真的么?我看你在刻苦研究,一张苦瓜脸。
小奇:昨天的内容我已经研究完了,现在在看数据类型转化和控制台的输入输出。我感觉不会难,只不过是刚看,一头雾水。
老酷:我只要给你简单说一遍,你便可以摆脱这张苦瓜脸,你信不?
小奇:真的么?只要你能做到。我请你吃饭。
老酷:让个位置。为了你的这顿饭我给你秀一波。(几分钟后),看代码

        static void Main(string[] args)
        {
            Console.WriteLine("sbyte\t\t\tmin:{0}\t\t\tmax:{1}", sbyte.MinValue, sbyte.MaxValue);
            Console.WriteLine("byte\t\t\tmin:{0}\t\t\t\tmax:{1}", byte.MinValue,byte.MaxValue);
            Console.WriteLine("short\t\t\tmin:{0}\t\t\tmax:{1}", short.MinValue, short.MaxValue);
            Console.WriteLine("ushort\t\t\tmin:{0}\t\t\t\tmax:{1}", ushort.MinValue, ushort.MaxValue);
            Console.WriteLine("int\t\t\tmin:{0}\t\t\tmax:{1}", int.MinValue, int.MaxValue);
            Console.WriteLine("uint\t\t\tmin:{0}\t\t\t\tmax:{1}", uint.MinValue, uint.MaxValue);
            Console.WriteLine("long\t\t\tmin:{0}\tmax:{1}", long.MinValue, long.MaxValue);
            Console.WriteLine("ulong\t\t\tmin:{0}\t\t\t\tmax:{1}", ulong.MinValue, ulong.MaxValue);
        }

运行结果:


运行结果

小奇:这是每个数据类型的取值范围么?
老酷:是的。数据类型之间的转化就像不同大小的容器倒水是一样的。如果将大桶中的水导入到小杯里面。则只能倒满一杯,剩下的水就浪费了。同样的道理long类型的数据强制转化成byte类型则可能会有数据丢失。这种可能发生丢失数据的转化方式我们称之为强制类型转化。杯中水导入桶中不会有溢出行为就像将byte类型转化成long类型不可能发生数据丢失一样。我们这种没有数据丢失的数据类型转化我们称之为隐式转化。
小奇:我明白了。你看看是不是这样的。

        static void Main(string[] args)
        {
            int num1 = 10;
            //强制类型转化 不发生数据丢失
            byte num2 = (byte)num1;
            Console.WriteLine(num2);

            int num3 = 20000;
            // 强制类型转化
            byte num4 = (byte)num3;
            Console.WriteLine(num4);
        }

运行结果:


运行结果

num3在强制类型转化后成了32 数据发生了丢失。
老酷:是的就是这个道理
小奇:隐式类型转化,不用担心数据丢失。

       static void Main(string[] args)
       {
           byte num1 = 126;
           //隐式类型转化
           int num2 = num1;
           Console.WriteLine(num2);

       }

老酷:你开始上道了,天生的程序员。
小奇:老酷,你开始写的代码,字符串里面有\t ,它是什么意思?
老酷:小伙儿,你看的挺细呀!!它就是一个制表符,表示一个TAB键,一个缩进,占四个空格。
小奇:恩。对于控制台的输出我想将字符串和数字形成一句话输出,怎么办?就像你在将数据类型的时候,我想输出"程咬金,等级:13,血量:3000,性别:男,参战状态:false".
老酷:有两种方式,第一种是使用连字符的方式。第二种是使用占位符的方式。下面我给你说一下第一种方式:

        static void Main(string[] args)
        {
            //用户名
            string username = "程咬金";
            //等级
            int level = 13;
            //血量
            int hp = 3000;
            //性别
            char gender = '男';
            //参战状态
            bool isFighting = false;

            Console.WriteLine(username+",等级:"+level+",hp:"+hp+",性别:"+ gender+",参战状态:"+isFighting);
        }

运行结果:


连字符运行结果

小奇:‘+’ 这不是加号么?
老酷:是的也不是。‘+’用在字符串和其他类型之间的时候就是连字符,用在整型、浮点型还有字符型之间的时候就是加号。连字符就是将字符串类型和其他类型拼接起来。
小奇:好吧,信号你给我说了这点。我感觉这是一个坑。
老酷:对于第二种方式的话,我们成为占位符。类似于大学生考前在图书馆占座是一个道理。接下来我们看看这个效果

        static void Main(string[] args)
        {
            //用户名
            string username = "程咬金";
            //等级
            int level = 13;
            //血量
            int hp = 3000;
            //性别
            char gender = '男';
            //参战状态
            bool isFighting = false;
            Console.WriteLine("{0},等级:{1},血量:{2},性别:{3},参战状态:{4}",username,level,hp,gender,isFighting);
        }
占位符运行效果

看一下效果,是不是一样的呢?
小奇: 是的,是不是{0}就是第一个占位符,以后每次增加一个后面的变量一个一个的去对应前面的占位符。
老酷:看来你理解很透彻。你在大学是不是经常占座?
小奇:我可是学霸,从不复习!
老酷:呦呵,看不错来呀!!但是这里要注意,占位符中的索引(就是大括号中的数字)必须从0开始,以后一次增加不能跳过任何一个数字。
小奇:懂了!我还有个问题,就是Console.Write()和Console.WriteLine()的区别就是有没有换行么?
老酷:是的。Console.Write()写到控制台上后没有换行,而Console.WriteLine()是要换行的。
比如:

        static void Main(string[] args)
        {
            Console.Write("12345");
            Console.Write("abcde");
        }
Console.Write的用法
        static void Main(string[] args)
        {
            Console.WriteLine("12345");
            Console.WriteLine("abcde");
        }
Console.WriteLine()用法

看到效果了吧?
小奇:懂了!我昨天在 练习这部分。但是我想把我输入的东西显示在控制台上怎么办?
老酷:这就需要控制台的输入了呀?需要使用Console.ReadLine();

        static void Main(string[] args)
        {
            Console.WriteLine("请输入旅游城市:");
            string place = Console.ReadLine();
            Console.WriteLine("欢迎来到{0}",place);
        }
Console.ReadLine()的用法

小奇:我貌似发现规律了。Console.WriteLine()就是将数据写到控制台上,Console.ReadLine()就是从键盘上读取数据
老酷:总结很到位。但是不够完整。Console.WriteLine()就是将数据从内存中写到控制台上,Console.ReadLine()就是从键盘上读取数据到内存中。
小奇:恩。今天可以和计算机交互了。开心
老酷:别开心了,带我吃饭去吧!
小奇:你来真的呀!!!!!

上一篇下一篇

猜你喜欢

热点阅读