字符串内存驻留机制详解示例
发布时间:2023-09-24 04:09:32
//字符串的内存驻留机制
public static void Test()
{
//当有多个字符串变量包含了同样的字符串实际值时,
//CLR可能不会为它们重复地分配内存,而是让它们统统指向同一个字符串对象实例。
String s1 = "Hello";
String s2 = "Hello";
bool same = (object)s1 == (object)s2;//比较一下s1和s2是否是同一个引用
Console.WriteLine(same); //这个地方为true:表示同一个引用 没有开辟新的内存空间
/*
* 我们知道,String类有很多特别的地方,其中之一就是它是“不会改变的”(immutable)。
* 这说明在我们每次对一个String对象进行操作时(比如说使用Trim,Replace等方法),
* 并不是真的对这个String对象的实例进行修改,而是返回一个新的String对象实例作为操作执行的结果。
* String对象的实例一经生成,到死都不会被改变了!
*/
/*关于驻留池:它是维护哪些字面量的字符串,但是不会维护下面的这种类型*/
StringBuilder sb = new StringBuilder();
sb.Append("Hel").Append("lo");
String s3 = "Hello";
String s4 = sb.ToString(); //虽然值相同但并不是同一个引用
bool same2 = ((object)s4 == (object)s3);
Console.WriteLine(same2);
/*让编程者能够强制CLR检查驻留池;查看是否有相同的字符串*/
StringBuilder sb2 = new StringBuilder();
sb2.Append("He").Append("llo");
string s5 = "Hello";
string s6 = String.Intern(sb2.ToString());
bool same3 = (object)s5 == (object)s6;
Console.WriteLine(same3);
}


猜你喜欢
- 用Canvas画贝塞尔曲线,要画贝塞尔曲线首先了解贝塞尔曲线:由于用计算机画图大部分时间是操作鼠标来掌握线条的路径,与手绘的感觉和效果有很大
- package cn.hackcoder.beautyreader.broadcast;import android.content.Bro
- 1 依赖配置<parent> <groupId>org.springframework.b
- 在android 6.0开始,部分的权限需要我们动态申请,也就是说当我们的打开app的时候系统不会主动像您申请app所需要的部分权限,需要客
- 最近在开发的过程中,一个列表的查询,涉及到了多表的关联查询,由于持久层使用的是mongodb,对这个非关系型数据使用的不是很多,所以在实现此
- 本文实例为大家分享了Android实现拼图小游戏的具体代码,供大家参考,具体内容如下目标效果: 1.activity_main.x
- 本文实例为大家分享了Androidstudio调用摄像头拍照并保存照片的具体代码,供大家参考,具体内容如下首先在manifest.xmlns
- 模板编程是idea的强大功能,也提高了开发人员的编程效率,比如输入main函数:public static void main(String
- Android ToggleButton 详解在Android的开发过程中,对于ToggleButton的使用频率也是相当的高的,下面我就来
- Java获取控制台输入的方法在学习网络编程中,有需要从控制台输入数据,进行两个线程之间的通信,其中,涉及到了读取控制台输入的两种不同的操作,
- 前言本文主要介绍了关于android实现一键锁屏和一键卸载的相关内容,分享出来供大家参考学习,这两个功能也是大家在开发中会遇到的两个需求,下
- 简介在Spring 5中,Spring MVC引入了webFlux的概念,webFlux的底层是基于reactor-netty来的,而rea
- 类和对象的关系类就是一类对象的统称。对象就是这一类具体化的一个实例。 (对象是类的实例化)对象是什么?此对象非彼对象!!!😂说到对象就要提到
- 前言今天重新装了IDEA2020,顺带重装了一些插件,毕竟这些插件都是习惯一直在用,其中一款就是Mybatis Log plugin,按照往
- 目录概述LRU 的原理LRU 算法的实现LRU 算法描述LRU 算法代码实现方法一方法二方法三总结概述LRU 算法全称为 Least Rec
- 我们经常会将数据源放在DataTable里面,但是有时候也需要移除不想要的行,下面的代码告诉你们DataTable dts;DataRow[
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 目标效果: 点击动画按钮之后每张牌各自旋转 散开到屏幕上半部分的任意位置之后回到初始位置 比较像LOL男刀的技能动画 : )1: 创建卡牌对
- 好久没有写过博客了,最近因项目需求,需要用到Socket来进行通信,简单写了几个例子,记录一下,代码很简单,无非就是接收与发送,以及接收到数
- 本文实例为大家分享了android实现选项卡功能,通过计算偏移量,设置tetxview和imageView的对应值,一些color的值读者自