C#课堂篇1

    科技2025-07-20  9

    写在前面

    这里是C Sharp 课堂篇系列博客,此系列博客主要记录一些小知识点总结、一些小细节

    C#和Java非常相似,也是完全面向对象的语言

    虽然我走的很慢,但我仍在前进!


    目录

    格式化输出、

    数据类型间的转换、

    string 对象特殊类型(相比值类型、引用类型)

    开始

    一、格式化输出、

    输入的语句:

    Console.ReadLine()Console.Readkey();

    输出的语句:

    Console.Write();Console.WriteLine();

    数据的格式化表示与基本用法

    含变量、数值的输出方法1:

    "{指定参数的输出序号} 自定义文字、符号" ,变量1,变量2,...."{指定参数输出序号,输出最小的长度} 自定义文字、符号",变量1,变量2,...."{指定参数输出序号,输出的最小长度 :可选的格式化代码字符串} 自定义的文字、符号",变量1,变量2,....

    含变量、数值的输出方法2:

    $"{变量名}自定义文字、符号"$"{变量名,输出最小的长度}自定义文字、符号"$"{变量名,输出的最小长度:格式码}自定义文字、符号"

    1.1输出的最小长度值:

    为正数:右对齐,左边补空格(想填充其他字符可以用:格式码+数字或者占位符)为负数:左对齐,右边补空格

    1.2 格式码之占位符

    0占位符: Console.Write("{0:00000}",123)—>输出00123 Console.Write("{0:00}",123)—>输出123 可以理解为再不改变数值的情况下,要求多的左边补0,要求位数少的原样输出#占位符 Console.Write("{0:#####}",123)—>输出123 Console.Write("{0:####}",123.64)—>输出124 Console.Write("{0:####.###}",123.64)—>输出123.64 Console.Write("{0:####.##}",123.64)—>输出123.6 对于整数部分,去掉左边的无效0;对于小数部分,按指定为四舍五入。如果这个数是0,而不想让他显示,就用占位符#

    1.3格式码之格式输出

    D、d: Console.Write("{0:d}",123)—>输出123 Console.Write("{0:d5}",123.64)—>输出00123

    F、f: Console.Write("{0:默认f2},123.645")—>输出123.65(注意四舍五入) Console.Write("{0:f3}",123.644)—>输出123.644

    N、n: Console.Write("{0:默认n2}",123.64)—>输出123.64 Console.Write("{0:n4}", 12345.6789);—>输出12,345.6789 Console.Write("{0:n3}", 12345.6789);—>输出12,345.679 整数3位一隔,n后面的数字主要针对小数,四舍五入

    P、p: Console.Write("{0:默认p2}", 12345.6789);—>输出1,234,567.89% Console.Write("{0:p3}", 12345.6789);—>输出1,234,567.890%

    C、c: Console.Write("{0:默认C2}", 12345.6789);—>¥12,345.68 Console.Write("{0:C3}", 12345.6789);—>¥12,345.679

    X、x: Console.Write("{0:x}", 123);—>7b Console.Write("{0:x4}", 123);—>007b 不够指定位数,前面补0,不设置就原样16进制输出

    二、数据类型间的转换、

    值类型(包括int、double、float、char等类型)之间的相互转化:

    隐式转化显示、强制转换

    特殊类型string、引用类型、值类型之间的转化(装箱、拆箱的过程)

    string类型和int、double之间的转化: 3.1 Convert.静态方法 3.2 int.Parse(str)、double.Parse(str)、string.Parse(num)string类型与数组之间的转换 4.1 数组—》string:int [] arr = {1,2,3};string str = string.join(",",arr); 4.2 string—》数组:string[] str = string.split(',')

    2.1整形转化为指定格式的字符串

    string.Format()方法 可以借助此转换指定形式 int i = 123; string s = string.Format("{0:d5}",i);—>输出00123

    $ 字符串表示法 int i = 123; string s = $("{0:d5}",i);—>输出00123

    ToString()方法 int i = 12; string s =i.ToStringt("d5");—>输出00012 string s1 =i.ToStringt("X");—>输出C

    三、string 对象特殊类型(相比值类型、引用类型)

    我们知道值类型 存储 在 栈区,引用类型存储在堆区

    string是特殊的引用类型

    3.1初始化一个字符串可以:

    string s1 = “你的字符串”;string s2 = new string(‘a’,3); //string s2 = new string(“abcd”);报错不支持

    为什么说 string类型为特殊的引用类型?

    我们都知道,引用类型的变量就相当于标签,当我们把 引用类型的变量 a 和 b 执行 a = b;

    则 b就指向 a 的内容了(两个标签指向共享一个内容),如果此时修改b的内容,则a、b共享的那一个内容 也会发生改变,

    也就是 输出 a 发现和 b 不一样了

    但是string是特殊的引用类型,见下面代码

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo_LianXi { class GeShiHuaShuChu { static void Main(String[] args) { //Console.Write("{0:x4}", 123); // int i = 123; // string s = string.Format("{0:d5}",i); // Console.Write(s); string s1 = "这是你的字符串"; string s2 = new string('a',3); Console.WriteLine(s1 + " " + s2); s2 = s1; Console.WriteLine(s1 + " " + s2); s2 = "bbbb"; Console.WriteLine(s1 + " " + s2); //string s2 = new string("abcd");报错 Console.ReadKey(); } } }

    结果显示 字符串 s1 的内容 始终没改变,就算 执行 s1 = s2 之后,修改s2 发现也没改变

    原因是string 特殊类型,当执行 s1 = s2 后,相当于复制 s1 的内容 重新开辟空间,并不是共享一段堆区内存

    Processed: 0.016, SQL: 8