1、数据类型之值类型
1、数据类型是表示具有多种相同特征的一组数据;
2、C# 预定义的数据类型包括两种值类型,引用类型;
3、值类型是在栈中操作,而引用类型则在堆中分配存储单元。
4、字面上理解就是直接保存其值,如 int (整型) 就属于值类型,如声明了一个整列变量,并给它赋予另一个整型变量的值,则在内存事先复制一个整型变量的值,然后将其赋予刚声明的整型变量,这时内存中就会有两个整型值。
5、引用类型的变量在内存中是直接保存其值的引用。C#语言中大多数复杂数据类型都是引用类型,例如类就是引用类型。
通俗地理解内存原理
1、内存可以划分为三大块;
2、堆;
3、栈;
4、静态存储区。
int a = 1024; //数值类型存储栈中 string s = "我要自学网"; //引用类型存储在堆中
值类型与引用类型
区别:
1)值类型和引用类型在内存上存储的地方不一样;
2)在传递值类型和传递引用类型的时候,传递的方式不一样;
值类型我们称之为值传递,引用类型我们称之为引用传递。
2、数据类型之值类型
1、值类型包括数值类型、布尔类型、字符类型等。
1)整数类型
2)浮点类型
3)布尔类型
只有 true 、false 、两个值,关键字为 bool ,计算机中占 4 个字节(4B),即 32 位在存储空间,但不能用 0 和 1 代替。
4)字符类型:
1、字符类型即保存单个字符的值,字符类型的关键字是 char ,每个字符对象与 Unicode 字符集的字符对应,char 类型的字符变量是用单引号括起来的,例如 ‘ C ’ 。如果把字符放在双引号中,编译器会将其认为字符串,从而产生错误。
2、自已查阅转义字符 (作业)
3、数据类型之引用类型
1、在C# 预定义的类型中,属于引用类型的有对象(object)类型和字符串(string)类型两种。
2、object类型:是所有其他类型的基类型,所以可把任何类型的值赋给它。看实例
3、String 类型:在 C#语言中,字符串(string)类型是用一对双引号引号引起来的字符
例如:” 我要自学网 “ ” 雪上行者 “ ” 51zxw.net “ 等都是字符串。字符串是一种特别的引用类型,通过复制实现对其赋值的。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _3._4_值类型 { class Program { static void Main(string[] args) { int INT = 12; char CHAT = ‘a‘; string STRING = "我要自学网"; object OFE = "什么类型都可以"; //object 可以应用于所有类型 object fie = 12354; Console.WriteLine(INT); Console.WriteLine(CHAT); Console.WriteLine(STRING); Console.WriteLine(OFE); Console.WriteLine(fie); Console.ReadKey(); } } }
运行结果:
字符串需要说明的两点
1、字符串的不可变性
1)当你给一个字符串重新赋值之后,老值并没有销毁,而是重新开辟一块空间存储新值。
2)当程序结束后,GC扫描整个内存,如果发现有的空间没有被指向,则立即把它销毁,
2、字符串可以看做是 char 类型的一个只读数组。
string s = "我要自学网”; s = "学习C#入门教程";
4、本章总结及任何实施
1、在学习一句话:
Console.ReadLine( );
用于接收用户的输入。要定义一个字符串变量来接收变存储用户输入的值。
练习:
1)问用户喜欢什么水果(fruits),假如用户输入“ 苹果 ” ,则显示 “ 哈哈,这么巧,我也喜欢吃苹果 ”
2)请用户输入姓名性别年龄,当用户按下某个键子后在屏幕上显示:您好:XX您的年龄是XX是个X生
解:
第一题 程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _3._5_任务实施 { class Program { static void Main(string[] args) { //Console.WriteLine("我要自学网很强大"); //Console.ReadKey(); Console.WriteLine("请输入你喜欢吃的水果!"); string fruit = Console.ReadLine(); Console.WriteLine("哈哈,这么巧,我也喜欢吃"+fruit); Console.ReadKey(); } } }
运行结果:
第二题 程序
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _3._5_任务实施 { class Program { static void Main(string[] args) { Console.WriteLine("请输入您的姓名:"); string Name = Console.ReadLine(); Console.WriteLine("请输入性别:"); string Gender = Console.ReadLine(); Console.WriteLine("您几岁了!"); string Age = Console.ReadLine(); Console.WriteLine("您好,{1}!!您是{1}生,您{2}岁了", Name, Gender, Age); Console.ReadKey(); //Console.ReadLine() ,用于接收用户的输入,输入类型默认为字符串 string 类型 //Console.WriteLine() ,双引号中的内容可原样输出,但是转义字符及索引号 {!} 除外,索引号必须从零不间断地顺延 } } }
运行结果: