Chapter2:C#基本数据类型
参考书籍:《C#边做边学》;
2.C#基本数据类型
2.1 变量与常量
-
变量是程序运行过程中用于存放数据的存储单元,变量的值的程序运行过程中可以改变;
-
变量定义:
-
定义变量时,必须给每个变量起名,通过变量名区分不同的变量;
-
定义变量时,必须为每个变量指定数据类型,变量的类型决定了存储在变量中的数值的类型;
-
变量定义语法格式:
// C#变量定义语法格式: 类型标识符 变量名1,变量名2,变量3,...; // 变量定义示例: int iNumber1,iNumber2; float fNumber1,fNumber2; string strName,strID;
-
变量在使用前,先定义,后使用;
-
-
变量赋值:
-
变量是一个能保存某种类型的具体数据的内存单元,可以通过变量名来访问这个具体的内存单元;
-
变量的赋值,是把数据保存到变量中的过程,变量赋值语法格式:
// C#变量赋值语法格式: 变量名 = 表达式; // 定义变量: int iNumber1, iNumber2; float fNumber1, fNumber2; // 赋值变量: iNumber1 = 100; iNumber2 = 200; fNumber1 = 1.23; fNumber2 = 4.56;
-
-
变量初始化:
-
在定义变量的同时对变量赋值,称为变量的初始化,变量初始化语法格式:
// C#变量初始化语法格式: 类型标识符 变量名 = 表达式; // 变量初始化: int iNumber1 = 100; float fNumber1 = 1.23;
-
-
常量是指那些基于可读格式的固定数值,在程序的运行过程中其值不可改变的;
-
声明常量的语法格式:
// 声明常量的语法格式: const 类型标识符 变量名 = 表达式; // 声明常量示例: const double PI = 3.1415926;
-
常量特点:
-
程序中,常量只能被赋予初始值,赋予初始值后,常量的值在程序运行过程中不允许改变,即无法对一个常量赋值;
-
定义常量时,表达式中的运算符对象只允许出现常量,不能有变量存在;
-
定义常量的示例:
// 正确定义常量与错误定义常量示例: int iNumber1 = 100; const int iNumber2 = 200; const int iNumber3 = iNumber2 + 100; // 正确,iNumber2是一个常量; const int iNumber4 = iNumber1 + 100; // 错误,iNumber1是一个变量; iNumber2 = 800; // 错误,常量不允许修改;
-
2.2 基本数据类型转换与运算
-
基本类型转换:把数据从一种类型转换为另一种类型,类型转换包括隐式转换和显式转换;
-
隐式转换:隐式转换是 C # {\rm C\#} C#默认的以安全方式进行的转换,不会导致数据丢失,如:从小的整数类型转换为大的整数类型,从派生类转换为基类;
-
显式转换:显式转换即强制类型转换,需要强制转换运算符,强制转换会造成数据丢失;
-
隐式转换和显式转换示例:
// CH02_01.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; // 隐式转换和显式转换示例: namespace CH02_01 { class CH02_01 { static void Main(string[] args) { // 1.隐式转换:int类型转换为double类型; int iNumber1 = 100; double dNumber1 = iNumber1; Console.WriteLine("隐式转换示例如下:"); Console.WriteLine("转换前的值为:" + iNumber1); Console.WriteLine("转换后的值为:" + dNumber1 + "\n"); // 2.显式转换 // double类型转int类型: double dNumber2 = 3.14; int iNumber2 = (int)dNumber2; Console.WriteLine("显式转换double类型转int类型示例:"); Console.WriteLine("(double to int)转换前的值为:" + dNumber2); Console.WriteLine("(double to int)转换后的值为:" + iNumber2 + "\n"); // string类型转换为其他类型: string sData1 = "584"; string sData2 = "5.84"; int strToInt = int.Parse(sData1); double strToDouble = double.Parse(sData2); Console.WriteLine("显式转换string类型转其他类型示例:"); Console.WriteLine("(string to int)转换前的值为:" + sData1); Console.WriteLine("(string to int)转换后的值为:" + strToInt); Console.WriteLine("(string to double)转换后的值为:" + sData2); Console.WriteLine("(string to double)转换后的值为:" + strToDouble + "\n"); // 其他类型转换为string类型: int iNumber3 = 584; double dNumber3 = 5.84; string intToStr = iNumber3.ToString(); string doubleToStr = dNumber3.ToString(); Console.WriteLine("其他类型转换为string类型示例:"); Console.WriteLine("(int to string)转换前的值为:" + iNumber3); Console.WriteLine("(int to string)转换后的值为:" + intToStr); Console.WriteLine("(double to string)转换前的值为:" + dNumber3); Console.WriteLine("(double to string)转换后的值为:" + doubleToStr); } } }
-
数据的输入与输出
- 控制台 ( C o n s o l e ) ({\rm Console}) (Console)的输入/输出主要通过命名空间 S y s t e m {\rm System} System中的 C o n s o l e {\rm Console} Console类来实现,提供了从控制台读写字符的基本功能;
- 控制台输入主要通过 C o n s o l e {\rm Console} Console类的 R e a d ( ) {\rm Read()} Read()方法和 R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法实现,控制台输出主要通过 C o n s o l e {\rm Console} Console类的 W r i t e ( ) {\rm Write()} Write()方法和 W r i t e L i n e ( ) {\rm WriteLine()} WriteLine()方法实现;
- R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法用来从控制台读取一行数据,一次读取一行字符的输入,且直到用户按下 E n t e r {\rm Enter} Enter键才会返回, R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法不接受回车键, R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法没有接收到任何输入,或接收了无效的输入,则 R e a d L i n e ( ) {\rm ReadLine()} ReadLine()方法返回 n u l l {\rm null} null;
- R e a d ( ) {\rm Read()} Read()方法用来从控制台的输入流读取下一个字符, R e a d ( ) {\rm Read()} Read()方法一次只能从输入流读取一个字符,且直到用户按下回车键才返回;
- W r i t e L i n e ( ) {\rm WriteLine()} WriteLine()方法是将信息输出到控制台, W r i t e L i n e ( ) {\rm WriteLine()} WriteLine()方法在输出信息的后面添加一个回车换行符,用来产生一个新行;
- W r i t e ( ) {\rm Write()} Write()方法是将信息输出到控制台, W r i t e ( ) {\rm Write()} Write()方法在输出信息到屏幕后不会产生一个新行;
2.3 项目实战1:求解圆面积和圆周长
项目需求: 提示用户输入圆的半径,计算圆的面积和圆的周长,并输出到控制台。
项目代码:
// CH02_02.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CH02_02
{
class CH02_02
{
static void Main(string[] args)
{
// 声明变量和常量;
double circleRadius, circleArea, circleCircumference;
const double PI = 3.1415926;
string strInput;
// 接收输入数据,转换为浮点数;
Console.WriteLine("请输入圆的半径:");
strInput = Console.ReadLine();
circleRadius = double.Parse(strInput);
// 计算圆的面积和圆的周长;
circleArea = PI * circleRadius * circleRadius;
circleCircumference = 2 * PI * circleRadius;
// 将计算结果输出到控制台;
Console.Write("圆的面积为:{0}", circleArea + "\n");
Console.WriteLine("圆的周长为:" + circleCircumference);
}
}
}
2.4 项目实战2:求解矩形的周长和面积
项目需求: 已知三个不同矩形的长宽,求解各矩形的周长和面积,并输出到控制台。
项目代码:
// CH02_03.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CH02_03
{
class CH02_03
{
static void Main(string[] args)
{
// 定义不同类型的矩形的长和宽;
int iRecLength = 10, iRecWidth = 20;
double dblRecLength = 10.1, dblRecWidth = 20.2;
float fRecLength = 10.11F, fRecWidth = 20.22F;
int iRecArea, iRecCircumference;
double dblRecArea, dblRecCircumference;
float fRecArea, fRecCircumference;
// 计算不同矩形的面积和周长;
iRecArea = iRecLength * iRecWidth;
iRecCircumference = 2 * (iRecLength + iRecWidth);
Console.WriteLine("圆1的长为:{0},圆1的宽为:{1}", iRecLength, iRecWidth);
Console.WriteLine("圆1的面积为:{0},圆1的周长为:{1}", iRecArea, iRecCircumference);
Console.Write("\n");
dblRecArea = dblRecLength * dblRecWidth;
dblRecCircumference = 2 * (dblRecLength + dblRecWidth);
Console.WriteLine("圆2的长为:{0},圆2的宽为:{1}", dblRecLength, dblRecWidth);
Console.WriteLine("圆2的面积为:{0},圆2的周长为:{1}", dblRecArea, dblRecCircumference);
Console.Write("\n");
fRecArea = fRecLength * fRecWidth;
fRecCircumference = 2 * (fRecLength + fRecWidth);
Console.WriteLine("圆3的长为:{0},圆3的宽为:{1}", fRecLength, fRecWidth);
Console.WriteLine("圆3的面积为:{0},圆3的周长为:{1}", fRecArea, fRecCircumference);
Console.Write("\n");
}
}
}
2.5 项目实战3:简易计算器,计算和差积商
项目需求: 接收控制台输入,输入两个整数,计算两个整数的和、差、积、商,并输出到控制台。
项目代码:
// CH02_04.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CH02_04
{
class CH02_04
{
static void Main(string[] args)
{
// 定义变量;
int iNumber1, iNumber2;
int iSum, iDifference, iProduct, iQuotient;
string strInput1, strInput2;
Console.WriteLine("请输入整数1:");
strInput1 = Console.ReadLine();
Console.WriteLine("请输入整数2(非零):");
strInput2 = Console.ReadLine();
// 输入转换为整数;
iNumber1 = int.Parse(strInput1);
iNumber2 = int.Parse(strInput2);
// 计算两个整数的和、差、积、商;
iSum = iNumber1 + iNumber2;
iDifference = iNumber1 - iNumber2;
iProduct = iNumber1 * iNumber2;
iQuotient = iNumber1 / iNumber2;
// 将计算结果输出到控制台;
Console.WriteLine("整数的和:" + iSum);
Console.WriteLine("整数的差:" + iDifference);
Console.WriteLine("整数的积:" + iProduct);
Console.WriteLine("整数的商:" + iQuotient);
}
}
}