首页 > 编程语言 >十五年程序员从零开始学C#系列之(一)——Literals 字面量

十五年程序员从零开始学C#系列之(一)——Literals 字面量

时间:2023-04-23 13:45:52浏览次数:33  
标签:Literals 常量 C# 字面 Literal 从零开始 变量

一、概念

在计算机编程中,Literals(字面量)是指在程序中直接表示数据的一种方式。它们是在代码中出现的固定值,与变量不同,它们没有名称或标识符。

Literals 可以用于各种数据类型,包括整数、浮点数、布尔值、字符和字符串等。下面是一些常见的Literals类型:

  1. 整数(Integer Literals):整数Literal是一个整数值,可以用十进制、八进制或十六进制表示。例如,十进制的整数10、八进制的整数012和十六进制的整数0xA都是Integer Literals。

  2. 浮点数(Floating-Point Literals):浮点数Literal是一个带有小数部分的数字,可以表示单精度或双精度浮点数。例如,3.14和1.23E+6都是Floating-Point Literals。

  3. 布尔值(Boolean Literals):布尔值Literal是一个只能有两个值之一的数据类型,即true或false。这些值通常用于比较和逻辑运算。

  4. 字符(Character Literals):字符Literal是一个单个的字符值,由单引号括起来。例如,'A'和'%'都是Character Literals。

  5. 字符串(String Literals):字符串Literal是一个由零个或多个字符组成的序列,由双引号括起来。例如,"Hello,World"和"Programming is fun!"都是String Literals。

Literals 在编程中非常有用,因为它们可以直接在代码中表示数据值,而不需要使用变量和表达式来计算这些值。这使得程序更加简洁和易于阅读,并且可以减少出错的机会。

二、示例

以下是一些使用C#中Literals的例子:

1. 整数Literal:可以在C#中使用十进制、八进制和十六进制表示整数。例如,以下代码分别定义了一个十进制、八进制和十六进制的整数变量:

```csharp
int decimalInt = 10;
int octalInt = 012;
int hexInt = 0x0A;
```

2. 浮点数Literal:可以在C#中使用小数点来表示浮点数。例如,以下代码分别定义了一个单精度和双精度的浮点数变量:

```csharp
float floatNum = 3.14f;
double doubleNum = 1.23E+6;
```

3. 布尔值Literal:在C#中,布尔值Literal只能取值true或false。例如,以下代码定义了两个布尔变量:

```csharp
bool isTrue = true;
bool isFalse = false;
```

4. 字符Literal:在C#中,字符Literal由单引号括起来,用于表示单个字符。例如,以下代码定义了一个字符变量:

```csharp
char charValue = 'A';
```

5. 字符串Literal:在C#中,字符串Literal由双引号括起来,用于表示一个或多个字符的序列。例如,以下代码定义了一个字符串变量:

```csharp
string stringValue = "Hello, World!";
```

这些是一些简单的例子,展示了如何在C#中使用Literals。在实际编程中,Literals经常用于初始化变量或表达式中的值。

三、分析

为什么要使用Literals字面量呢,Literals跟常量有什么差别,在内存分配上有什么差别

使用Literals字面量可以使代码更加简洁、易读、易维护。在C#中,Literals是一种表示数据值的直接方式,与变量不同,它们没有名称或标识符。因此,当需要使用一个固定值时,可以直接在代码中使用Literals,而不必先定义一个变量或常量。

常量和Literals都可以用于表示固定值,但它们有一些重要的区别。常量是指在程序中定义的变量,其值在编译时就已经确定,并且不能被修改。相比之下,Literals是在程序运行时直接使用的值,它们不能被修改,但是可以被赋给变量或常量。

在内存分配上,常量和Literals也有不同。常量通常会被编译器存储在程序的元数据中,而不是在堆栈或堆上分配内存。这意味着常量的内存分配是在程序启动时完成的,而不是在运行时动态分配。相比之下,Literals通常被视为编写代码时的一部分,它们在运行时分配内存并占用空间。

四、使用场景

当需要使用一个固定值时,可以使用Literals字面量或常量来表示该值。以下是一些使用Literals字面量和常量的场景:

1. 当某个变量只在代码中用到一次且不需要修改时,可以使用Literals字面量,而不必声明变量。

2. 当某个值需要被多处使用时,可以将其定义为常量,以避免出现拼写错误或其他错误。

3. 当某个值需要在编译时确定时,应将其定义为常量,以提高类型安全性和效率。

4. 当某个值需要在运行时动态计算时,应使用变量或表达式来表示该值。

简单归纳一下:

为什么要使用Literals,在代码中只用到一次或几次且不需要修改时,就可以使用字面量,当某个值多次使用又不需要改变,可以将其定义为常量。常量通常会被编译器存储在程序的元数据中,而不是堆栈或者是堆上,这意味着常量的内存分配是在程序启动时完成的,而不是在运行时动态分配。相比之下,Literals通常被视为编写代码时的一部分,它们在运行时分配内存并占用空间。字面量通常是使用在赋值当中。

 

标签:Literals,常量,C#,字面,Literal,从零开始,变量
From: https://www.cnblogs.com/DinAction/p/17346302.html

相关文章

  • html css 怎么导入外部css
    在HTML文件中导入外部CSS样式表,可以使用<link>标签。具体步骤如下:创建一个样式表文件(通常以.css扩展名为后缀),并将所有的CSS样式规则存放在该文件中。在HTML文件中添加一个<link>标签,指定rel="stylesheet"属性和href属性,其中href属性值应该是样式表文件的U......
  • jmeter中的java请求 用httpclient写的http请求 及参数化
    首先,jmeter中的sample的原理: jmeter 中的java 请求,sample 原理,java testjmeter自带的包,把包放在类路径下面,通过反射机制,通过反射机制扫出来。 先导入五个jar包  packagecom.young.testing91;importjava.io.IOException;importorg.apache.http.client.C......
  • 业务接口造数据(httpclient)
    导入httpclientjar包创建maven工程 httpclient发送get请求packagecom.testing91;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importorg.apache.http.client.ClientProtocolException;importorg.apache.http.client......
  • k8s-问题:[root@master log]# kubectl get node The connection to the server 192.168
    记一次测试虚拟机异常关机导致的问题[root@masterlog]#kubectlgetnodeTheconnectiontotheserver192.168.0.105:6443wasrefused-didyouspecifytherighthostorport?这个问题网上的大部分解决方案是kubeadminit直接这么搞我相信肯定能恢复,毕竟是重新初始化,但......
  • SpringMVC-响应数据和结果视图
    一、返回值分类1、字符串@Controller@RequestMapping("test")publicclasstest{@RequestMapping("testString")publicStringtestString(Modelmodel){Useruser=newUser();user.setUserName("李四");......
  • vue学习 第四天 css ---元素显示模式 display
     导学: 1)设置元素显示模式display2)block(块)、inline(行内)、inline-block(行内块)3)每一种元素模式的特点 1、元素显示模式:  独占一行 (块元素)和 共用一行(行内元素)HTML元素一般分为块元素和行内元素两个类型。 2、块元素:<h1>~<h6>、<p>、<div......
  • Atcoder Beginner Contest 299 G
    对于要打印的\(B\),我们首先尝试确定\(B_1\)。让\(f(x)(1≤x≤M)\)是最大的\(i\),使\(A_i=x\)。对于\(r:=\underset{{{1≤x≤M}}}{\min}f(x)\),我们可以证明\(B_1\)是\(A_1,A_2,...,A_r\)中的一个(否则,\(B\)是\(A_{>r}:=(A_r+1,Ar+2,...,A_N)\)的一个子序列,但......
  • odoo中打印模板处理selection字段
    在odoo中处理selection字段,通常情况下,如果拿到的是key,还要再翻译成value.这里可以用fields_get()这个函数,来实现这个问题${dict(item.fields_get(allfields=['type_id'])['type_id']['selection']).get(item.type_id)} 这里的item是数据集‘type_id’selection的字段......
  • netcore 技术栈=
    学习计划.netcore工作原理(基本用法已掌握,但是要更深入一点).netcore的IOC,DI,AOP,DDDABP框架linux(常用命令,ftp)部署.netcore应用到CentOSNginx反向代理及分布式Session在容器中部署.netCore应用通过Nginx反向代理到Docker中的.netCore容器及分布式集成(Docker,K8s,Jenkins,Gi......
  • Unable to tunnel through proxy. Proxy returns "HTTP/1.1 503 Service Unavailable
    背景:某日,一正常项目迁移到新的服务器新的服务器,需要使用代理来访问之前能直接访问的接口,加完代理之后,发现无法获取数据了报错:org.springframework.web.client.ResourceAccessException:I/OerroronGETrequestfor"https://xxxxxxxxxx/xxxx":Unabletotunne......