C#基础--之数据类型

news2024/11/24 1:27:22

C#基础–之数据类型
在第一章我们了解了C#的输入、输出语句后,我这一节主要是介绍C#的基础知识,本节的内容也是后续章节的基础,好的开端等于成功的一半。在你阅读完本章后,你就有足够的C#知识编写简单的程序了。但还不能使用封装、继承、多态或其它面向对象的特征。
本章主要针对以下几个部份来进行讲解:
1、电脑是由什么来存储所使用的数据?
2、基本数据类型有哪些?
3、如何声明变量和赋值?
4、变量和常量的区别?
5、不同数据类型之间是如何转换的?
下面,我们现一个一个的来了解这些问题。

一、电脑是由什么来存储所使用的数据?
  这个问题用一句话比较笼统的概括,那就是:电脑使用内存来记忆计算时所使用的数据。
  在现实生活中的数据各种各样,整数、小数、字符串、字符等等,它们的类型是不一样的,所以你要想在计算机中使用这些类型,就必须在内存中为它申请一块合适的空间。
 那有哪些数据类型是C#能使用的呢?我们一起来看一看.

  二、基础数据类型有哪些
  首先要了解一点:C#认可的基础数据类型并没有内置于C#语言中,而是内置于.net Framework中。
  如,在c#中声明一个int类型的数据时,声明的实际上是.net结构System.Int32的一个实例。这听起来似乎很深奥,但其意义深远:这表示在语法上,可以把所有的基础数据类型看作是支持某些方法的类。
 类型实际上仍存储为基本类型。基本类型在概念上用.Net结构表示,所以肯定没有性能损失。
 下面大家一起来了解一下C#中定义的内置类型,我们将列出每个类型,以及它们的定义和对应的.net类型(CTS类型)的名称。
  c#有15个预定义类型,其中13个是值类型,两个是引用类型(string 和 object)

1、整型

在这里插入图片描述

2、浮点类型
在这里插入图片描述

float数据类型用于较小的浮点数,因为它要求的精度较低。

double数据类型比float数据类型大,提供的精度也大一倍(15位)。
如果在代码中没有对某个非整数值(如12.3)硬编码,则编译器一般假定该变量是double。
如果想指定该值为float,可以在其后加上字符F(或f),如:
float f = 12.3F;

3、decimal类型
在这里插入图片描述

decimal类型专门用于进行财务计算,使用decimal类型提供的28位的方式取决于用户。
要把数字指定为decimal类型,可以在数字的后面加上字符M或(m),如:
decimal d=12.30M;

4、bool(布尔)类型

在这里插入图片描述

5、char字符类型

在这里插入图片描述

 char类型的字变量是用单引号括起来的。     如'A'
 如果把字符把在"A"(双引号)内,编译器会把它看作是字符串,从而产生错误。

6、引用类型(Object类型和字符串类型)

在这里插入图片描述

三、如何声明变量和赋值?
1、变量的定义:是指在程序的运行过程中随时可以发生变化的量
2、上面我们提到,变量在运行时当中是存在内存当中的,它是一个临时的存放场所。
那么在内存当中,可以存放如数字、字符串、日期等等各种类型的数据。

大家可以看一看这张图,它就把表示内存当中的一个状态。

在这里插入图片描述

简单的来说,变量就是表示内存当中的一块存储区域。

它会对应一个唯一的内存地址,但是我们在使用程序当时候,内存地址不好理解也不好记忆。
那么怎么办呢?

在日常生活当中我们都有一个名字,如"张三“、”李四“等,这些名字就是为了便于记忆。
那么同样,在程序当中,为了区别多个变量,那就需要为每个变量赋值一个简短,便于记忆的名字,
这就是变量名。

 3、 C#中的变量的命名是是有规则的:
     1)、由字母、数字或下划线"_"组成
     2)、必须由字母或下划线"_"开头,不能以数字开头
     3)、不能是c#中的关键字 如:int、string、bool、Main、class等 
     4)、区分大小写  如:小写的a  和  大写的A 是两个变量
 
  4、做为一个比较好的学习者,就必须遵守一些变量命名规范:
       1)、变量的名字要有意义,尽量用对应的英语命名,具有“见名知意“的作用。
              如:姓名   变量取名为 name 或者 用拼单  xingMing,避免用a,b,c来进行命名。
       2)、避免使用单个字符作为变量名( 除在循环里面定的变量)
       3)、当使用多个单词组成变量名时,应该使用骆驼(Camel)命名法
               骆驼(Camel)命名法:第一个单词的首字母小写,其它单词的首字母大写,如:myName,myAge
       
      选择题:以下变量命名正确的是(     )
              A、name、 _222*1、 9class、 public
              B、_teacher、 void、 string、 myName
              C、$Age、 corss、 fire、 _grade
              D、_glass、 g23、 c_12、 my_first_2


  5、变量的声明和赋值
      1)定义变量的语法:
        数据类型    变量名;      (定义一个年龄的变量,年龄是整数,所以变量定义如下:)
          int          age;         [系统会根据数据类型,在内存中分配不同大小的存储空间]

         每个数据类型后面,可以定义多个变量,如:(定义姓名、家庭地址、籍贯、民族)
            string name,address,origin,national ;
        
       2)为变量赋值语法:
           变量名 = 值;           
          (这里的=号表示赋值运算符,把=号右边的值,赋值给左边的变量名,最后以一个;[分号]结束)
           如:年龄18岁,姓名为“小张",家庭地址为“重庆南坪XXX",
                  籍贯为“重庆",民族为“汉"
            age = 18 ;
            name = "小张" ;
            address = "重庆南坪XXX" ;
            origin = "重庆" ;
            national = "汉" ;

四、变量和常量的区别
变量:是指在程序的运行过程中随时可以发生变化的量
常量:是指在程序在运行过程中不会发生变化的变量

      常量的特点:
               1、必须在声明是赋值
               2、不能在在程序运行时,给常量赋值
               3、常量是静态的。不必须(实际上,是不允许)在常量声明中包含修饰符static 

五、不同数据类型之间是如何转换的
在C#中数据类型转换分为两种:1)隐式[又叫自动]类型转换 2)显式[又叫强制]类型转换
举个简单例子:
飞机场里面停飞机,这是理所当然,我们把这种叫做隐式[又叫自动]类型转换

       那如果我们反过来看一看,飞机里面装飞机场,这个在我们实际生活中,觉得这是根据不可能的,
       但是程序可能做到这一点,我们把这种叫做显式[又叫强制]类型转换

   在C#中数据类型转换分为两种:1)隐式[又叫自动]类型转换     2)显式[又叫强制]类型转换
       举个简单例子:
       飞机场里面停飞机,这是理所当然,我们把这种叫做隐式[又叫自动]类型转换

       那如果我们反过来看一看,飞机里面装飞机场,这个在我们实际生活中,觉得这是根据不可能的,
       但是程序可以做到这一点,我们把这种叫做显式[又叫强制]类型转换

       double和int之间就是(飞机场与飞机)这种关系,我们可以这样理解,double的取值范围比int要大得多
       所以double可以装得下int :
      int a=1234;   
      double b=a;   系统会把a整型变量的值赋值给double变量b.这就是隐式[又叫自动]类型转换

     那反过来:
     double a=1234;
     int b=a;        //系统编译时会报错,如图:
       
    
       那如何进行强制转换呢?c#提供了非常简便的方法,如:
      double a=1234;
      int b=(int)a;      //这样就强制把double类型,转换为int类型

     最后,再介绍一下,其它数据类型之间的转换(1、字符串转换为其它类型   2、任意类型之间的转换)
     1)、字符串转换为其它类型       
   语法:
    XX.Parse(字符串);         这里的xx代表的如:double,int,bool等
     举个例子来说明一下:
      string strValue="123.45";     //这是一个字符串,时面的值是"123.45"
      现要把它转换成小数类型,就可以使用double.Parse();来进行转换
     double dValue=double.Parse(strValue);

   2)、任意类型之间的转换
    语法:     
     Convert.ToXX(任何类型);

     如:把一个布尔类型转换为整型
              bool a = true;
              int b = Convert.ToInt16(a);
             Console.WriteLine("转换后的结果是:"+b);  //转换后的结果是:1

ok, 经过以上的学习,我相信大家对C#的一些基础知识有一定的了解,那么下一章我将介绍C#的算术运算符、逻辑运算符、关系运算符,以及控制程序流的语句。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1588553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一些优雅的算法(c++)

求最大公约数&#xff1a;辗转相除法 int gcd(int a,int b){return b0?a:gcd(b,a%b); }求最小公倍数&#xff1a;两整数之积除以最大公约数 int lcm(int a, int b){return a*b / gcd(a, b); }十进制转n进制&#xff1a; char get(int x){if(x<9){return x0;}else{return…

java 邮件发送表格

邮件发送表格 问题导入效果图 实现方案1. 拼接HTML文件&#xff08;不推荐&#xff09;2. excel 转HTML使用工具类来转化依赖工具类代码示例 使用已工具包 如 aspose-cells依赖代码示例 3.使用模板生成流程准备模板工具类代码示例 问题导入 在一些定时任务中&#xff0c;经常会…

SpringBoot 集成Swagger3

说明&#xff1a; 1&#xff09;、本文使用Spring2 集成Swagger3&#xff0c; 本想使用Springboot3 jdk 17 集成Swagger3, 但是搜了一些资料&#xff0c;Spring 想引用swagger3 需要依赖降级使用Spring2 版本&#xff0c; 或者使用Spring3 springdoc 实现swagger的功能&…

数据结构—顺序表(如果想知道顺序表的全部基础知识点,那么只看这一篇就足够了!)

前言&#xff1a;学习完了C语言的基础知识点之后&#xff0c;我们就需要使用我们所学的知识来进一步对存储在内存中的数据进行操作&#xff0c;这时候我们就需要学习数据结构。而这篇文章为数据结构中顺序表的讲解。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以…

JavaEE初阶——多线程(一)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享多线程的第一部分:引入线程以及创建多线程的几种方式 此文章是建立在前一篇文章进程的基础上的 如果有不足的或者错误的请您指出! 1.认识线程 我们知道现代的cpu大多都是多核心…

Flutter学习13 - Widget

1、Flutter中常用 Widget 2、StatelessWidget 和 StateFulWidget Flutter 中的 widget 有很多&#xff0c;但主要分两种&#xff1a; StatelessWidget无状态的 widget如果一个 widget 是最终的或不可变的&#xff0c;那么它就是无状态的StatefulWidget有状态的 widget如果一个…

SpringCloud Alibaba Sentinel 简介和安装

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十三篇&#xff0c;即介绍 SpringCloud Alibaba Sentinel 简介和安装。 二、Sentinel 简介 2.1 Sent…

2024Mathorcup(妈妈杯)数学建模C题python代码+数据教学

2024Mathorcup数学建模挑战赛&#xff08;妈妈杯&#xff09;C题保姆级分析完整思路代码数据教学 C题题目&#xff1a;物流网络分拣中心货量预测及人员排班 因为一些不可抗力&#xff0c;下面仅展示部分代码&#xff08;很少部分部分&#xff09;和部分分析过程&#xff0c;其…

(Java)数据结构——图(第七节)Folyd实现多源最短路径

前言 本博客是博主用于复习数据结构以及算法的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 Folyd实现原理 中心点的概念 感觉像是充当一个桥梁的作用 还是这个图 我们常在一些讲解视频中看到&#xff0c;就比如dist&#xff08;-1&#xff09;&#xff0…

bayes_opt引用失败,解决方案

bayes_opt引用失败&#xff0c;如图&#xff1a; 1.pip install bayesian-optimization报错&#xff0c;如图&#xff1a; 2.【解决方案】pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bayesian-optimization

【opencv】示例-detect_blob.cpp

// 导入所需的OpenCV头文件 #include <opencv2/core.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/highgui.hpp> #include <opencv2/features2d.hpp> // 导入向量和映射容器 #include <vector> #include <map> // 导入输入输出…

一文读懂传统服务器与云服务器的区别

传统服务器 传统服务器一般指的是物理服务器。物理服务器是独立存在的&#xff0c;无需与其他用户共享资源&#xff0c;拥有完全管理员权限和独立IP地址&#xff0c;安全稳定性高&#xff0c;性能优越。物理服务器与通用的计算机架构类似&#xff0c;由CPU、主板、内存条、硬…

区块链安全-----区块链基础

区块链是一种全新的信息网络架构 &#xff0c;是新一代信息基础设施 &#xff0c;是新型的价值交换方式、 分布式协 同生产机制以及新型的算法经济模式的基础。 区块链技术可以集成到多个领域。 区块链的主要用途 是作为加密货币的分布式总帐。 它在银行 &#xff0c;金融 &…

oracle数据库怎么查看当前登录的用户?

方法如下&#xff1a; 输入select * from dba_users; 即可。 常用语句&#xff1a; 一&#xff0c;查看数据库里面所有用户&#xff1a; select * from dba_users; 前提是你是有dba权限的帐号&#xff0c;如sys,system。 二&#xff0c;查看你能管理的所有用户&#xff1…

react17中配置webpack:使用@代表src目录

在vue的项目中可以使用表示src目录&#xff0c;使用该符号表示绝对路径&#xff0c;那么在react中想要使用怎么办呢&#xff1f; 在react中使用表示src目录是需要在webpack中配置的&#xff0c;在核心模块node_modules-》react-scripts-》config-》webpack.config.js中搜索找到…

python——列表(list)

概念 列表一般使用在一次性存储多个数据 语法 lst[数据1&#xff0c;数据2&#xff0c;.....]方法 #mermaid-svg-flVxgVdpSqFaZyrF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-flVxgVdpSqFaZyrF .error-icon{…

【2024最新博客美化教程重置版】一分钟教会你在博客页面中加入javascript点击出弹出文字效果!

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;程序猿、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 我们可以在博客…

利用正射影像对斜射图像进行反向投影

在图像投影和映射领域,有两种类型的投影:正向投影和反向投影。正向投影涉及使用内部方向(即校准相机参数)将 3D 点(例如地面上的物体)投影到 2D 图像平面上。另一方面,向后投影是指根据 2D 图像确定地面物体的 3D 坐标的过程。 为了匹配倾斜图像和正射影像并确定相机位置…

[C++][算法基础]有向图拓扑排序(拓扑)

给定一个 n 个点 m 条边的有向图&#xff0c;点的编号是 1 到 n&#xff0c;图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列&#xff0c;如果拓扑序列不存在&#xff0c;则输出 −1。 若一个由图中所有点构成的序列 A 满足&#xff1a;对于图中的每条边 (x,y)&a…

FreeAskInternet:本地AI搜索引擎,一周收获6.4K Star

简介 FreeAskInternet是一个完全免费&#xff0c;私人和本地运行的搜索聚合器和答案生成使用LLM&#xff0c;无需GPU。用户可以提出一个问题&#xff0c;系统通过搜索进行多引擎搜索&#xff0c;并将搜索结果合并到ChatGPT3.5 LLM中&#xff0c;根据搜索结果生成答案。所有进程…