值类型和引用类型

简介: 值类型和引用类型

值类型和引用类型

值类型:直接将内存存储在栈内,由系统自动释放资源的数据类型.与值类型相对应的有引用类型.C#语言中还对应指针类型

引用类型 由类型的实际值引用(类似于指针)表示的数据类型。如果为某个变量分配一个引用类型,则该变量将引用(或“指向”)原始值。不创建任何副本。引用类型包括类、接口、委托和装箱值类型。      

下面是结构体(值类型)和类(引用类型的区别)

值类型和引用类型的区分 (360doc.com)

为什么对象是引用类型,为什么string是引用类型,底层原理是什么?

引用是一种别名,本质上是指向同一块地址,底层实现是通过指针。

c#与c++做联系,引用类型相当于指针变量,值类型相当于普通变量。

值类型是复制的,对象一般都会占据比较大的内存空间。所以采用引用类型,不然效率低。理论上来说,在语言设计的时候,采用值类型还是引用类型没有严格的意义,这样的划分主要是为了效率。 正是因为这样的考虑,虽然struct是值类型,但也不建议用值类型的方式进行传参。

string指向常量空间的地址,常量是不能直接被改变的,如果想改变字符串的值是不能通过直接修改字符串常量来达到修改字符串的目的,必须是开辟另一个常量空间存放新的字符常量。

(91条消息) 为什么string是引用类型_kenniszy的博客-CSDN博客_string为什么是引用类型

我认为底层原理就是值类型存储在栈上,栈空间小,对象比较大,字符串也一样,所以在栈上存地址,new之后再在堆上分配空间存内容。


那我们来看看

堆和栈的区别


相关文章
|
边缘计算 缓存 运维
聚焦边缘计算场景,打造云边端一体化容器云平台
8月26日的2022亚太内容分发大会暨CDN峰会上,阿里云技术专家徐若晨受邀作客【边缘计算论坛】并发表了题为《边缘容器云平台的探索和实践》的精彩演讲。
1529 0
vllm+vllm-ascend本地部署QwQ-32B
本指南介绍如何下载、安装和启动基于Ascend的vLLM模型。首先,可通过华为镜像或Hugging Face下载预训练模型;其次,安装vllm-ascend,支持通过基础镜像(如`quay.io/ascend/vllm-ascend:v0.7.3-dev`)或源码编译方式完成;最后,使用OpenAI兼容接口启动模型,例如运行`vllm serve`命令,设置模型路径、并行规模等参数。适用于大模型推理场景,需注意显存需求(如QwQ-32B需70G以上)。
4791 17
|
人工智能 自然语言处理 API
快速使用 DeepSeek-R1 满血版
DeepSeek是一款基于Transformer架构的先进大语言模型,以其强大的自然语言处理能力和高效的推理速度著称。近年来,DeepSeek不断迭代,从DeepSeek-V2到参数达6710亿的DeepSeek-V3,再到性能比肩GPT-4的DeepSeek-R1,每次都带来重大技术突破。其开源策略降低了AI应用门槛,推动了AI普惠化。通过阿里云百炼调用满血版API,用户可以快速部署DeepSeek,享受高效、低成本的云端服务,最快10分钟完成部署,且提供免费token,极大简化了开发流程。
191909 31
快速使用 DeepSeek-R1 满血版
|
供应链 监控 数据挖掘
1688 商品详情接口系列(1688 API)
1688商品详情接口系列(1688 API)是阿里巴巴旗下批发电商平台提供的强大工具,支持开发者、商家获取商品的详细信息。通过商品基本信息、价格库存、图片和描述查询接口,用户可以精准高效地获取商品数据,涵盖电商运营、数据分析、市场调研等领域,极大提升工作效率。示例代码展示了如何使用Python调用这些接口,助力电商平台整合、价格监控、商品展示优化及库存管理等应用场景。
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:Transformer模型
使用Python实现深度学习模型:Transformer模型
2060 0
使用Python实现深度学习模型:Transformer模型
|
存储 缓存 安全
动态DMA映射指南 【ChatGPT】
动态DMA映射指南 【ChatGPT】
|
监控 Java 编译器
jstat使用实用教程
jstat使用实用教程
370 0
|
弹性计算 监控 安全
5 分钟上手函数计算
在使用函数计算前,您需要开通函数计算服务。本场景中提供的阿里云子账号无函数计算服务操作权限,请使用您自己的阿里云账号操作。您无需担心扣费问题,因为函数计算服务有一定的免费额度。
31109 0
5 分钟上手函数计算
|
Java Maven 微服务
【微服务项目异常】Maven中模块显示灰色的原因与解决办法
【微服务项目异常】Maven中模块显示灰色的原因与解决办法
644 0
|
Java Windows
JDK17 || JDK 8 完美 卸载 教程 (Windows版) 完整指南:卸载JDK17和JDK8,并安装新版JDK
JDK17 || JDK 8 完美 卸载 教程 (Windows版) 完整指南:卸载JDK17和JDK8,并安装新版JDK
5671 0