关于string的对象引用
什么都不说了, 一切都在代码里:
1 string a1 = "aaa"; // 在堆中分配"aaa"
2 string a2 = "aaa"; // 堆中已有"aaa", 则不再给"aaa"分配新空间,a2指向a1的地址
3 string a3 = new string("aaa".ToCharArray()); // new产生新的对象,分配新的空间
4
5 Console.WriteLine(object.ReferenceEquals(a1, "aaa")); //Ture
6 Console.WriteLine(object.ReferenceEquals(a1, a2)); //True
7 Console.WriteLine(object.ReferenceEquals(a1, a3)); //False
8
9 string b1 = "bbb";
string c1 = "aaabbb"; // 定义"aaabbb"
string c2 = "aaa" + "bbb"; // "aaa"和"bbb"都是常量, 合成为"aaabbb"指向c1
string c3 = a1 + "bbb"; // a1是变量, 则给c3分配新的空间
string c4 = a1 + b1; // 同上, c4分配新的空间
string c5 = a1 + b1; // 同上, c5分配新的空间
Console.WriteLine(object.ReferenceEquals(c1, c2)); //True
Console.WriteLine(object.ReferenceEquals(c1, c3)); //False
Console.WriteLine(object.ReferenceEquals(c1, c4)); //False
Console.WriteLine(object.ReferenceEquals(c3, c4)); //False
Console.WriteLine(object.ReferenceEquals(c5, c4)); //False
关于string的对象引用的更多相关文章
- 详解FindBugs的各项检测器 .
FindBugs是一个静态分析工具,在程序不需运行的情况下,分析class文件,将字节码与一组缺陷模式进行对比,试图寻找真正的缺陷或者潜在的性能问题.本文档主要详细说明FindBugs 2.0.3版本 ...
- JVM-垃圾收集过程的内存管理
JDK1.7 JVM的垃圾收集算法有 1. 标记-清除算法: 2. 复制算法:在商业虚拟机都是使用这种算法来回收新生代的 3. 标记-整理算法: 4.分代收集算法: JDK1.7 JVM的垃圾收集器有 ...
- Thread之模板模式
我们知道,在实际使用线程的时候,真正的执行逻辑都是写在run方法里面,run方法是线程的执行单元,如果我们直接使用Thread类实现多线程,那么run方法本身就是一个空的实现,如下: /** * If ...
- 进阶Java编程(5)基础类库
Java基础类库 1,StringBuffer类 String类是在所有项目开发之中一定会使用到的一个功能类,并且这个类拥有如下的特点: ①每一个字符串的常量都属于一个String类的匿名对象,并且不 ...
- Spring Framework Part3 IoC and Dynamic Proxy
spring serious of blog edit by 马士兵教育 Maven方式创建Spring工程 工程创建 1.新建项目 选择Maven Project 2.勾选 Create a sim ...
- 你见过老外的 Java 面试题吗 (上)?
前言 最近无聊的在逛某 tube 网站,本来想看看大家是怎么吐槽川普的,结果无意间点进了一个老外面试 Java 的视频,对于常年面试被吊打的我瑟瑟发抖,于是决定进去一探究竟. 毕竟不是专业的后台开发, ...
- Server.MapPath(string sFilePath) 报未将对象引用到实例异常
System.Web.HttpContext.Current.Server.MapPath(string sfilePath)将虚拟路径转换成物理路径.这个必须在aspx或者MVC中Action调用才 ...
- 将C-风格字符串用作string对象引用参数
string类定义了一种char*到string的转换功能,这使得可以使用C-风格字符串来初始化string对象. 类型为const引用的形参其中一个属性表明:假设实参的参数类型与引用参数不匹配,但可 ...
- 097、Java中String类之修改字符串对象引用
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
随机推荐
- 简单的HTML注册界面
<html><head><title>我的第一个HTML页面</title></head><body><center> ...
- lua调用C语言
在上一篇文章(C调用lua函数)中,讲述了如何用c语言调用lua函数,通常,A语言能调用B语言,反过来也是成立的.正如Java 与c语言之间使用JNI来互调,Lua与C也可以互调. 当lua调用c ...
- python新手 实践操作 作业
#有如下值集合 [11,22,33,44,55,66,77,88,99],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中.即: {'k1': 大于66的所 ...
- Facebook 在page添加自己开发的app
最初接到的需求是,在facebook主页中嵌入一个类似这样领取游戏礼包的页面. 一开始连facebook开发者中心在哪里都不知道,在万能的搜索框里面找到static html之类的第三方应用,但是这样 ...
- [SOJ] can I post the letter?
1155. Can I Post the letter Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description I am a t ...
- Tomcat多域名的配置
有时候我们有好几个项目需要发布在同一个tomcat服务器上,每个项目有不同的域名.这就需要在tomcat里配置多域名,添加多个虚拟主机. 主要在server.xml里面设置: 在<Engine& ...
- web端和手机端测试有什么不同
面试中经常被问到web端测试和手机端测试有什么相同点和区别呢?现在总结一下这个问题,如有不对敬请指正 web端和手机端测试有什么区别 1.相同点 不管是web测试还是手机App测试,都离不开测试的相关 ...
- CNN计算过程
- 常见dos命令
打开控制面板:win+r control 服务: win+r services.msc
- JMeter+ant+jenkins自动化持续集成
一.ant安装配置 1.官网下载地址:http://ant.apache.org/bindownload.cgi 对应的操作系统选择对应的版本下载,本文以windows为列,下载后解压到本地 2.设置 ...