什么都不说了, 一切都在代码里:

 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的对象引用的更多相关文章

  1. 详解FindBugs的各项检测器 .

    FindBugs是一个静态分析工具,在程序不需运行的情况下,分析class文件,将字节码与一组缺陷模式进行对比,试图寻找真正的缺陷或者潜在的性能问题.本文档主要详细说明FindBugs 2.0.3版本 ...

  2. JVM-垃圾收集过程的内存管理

    JDK1.7 JVM的垃圾收集算法有 1. 标记-清除算法: 2. 复制算法:在商业虚拟机都是使用这种算法来回收新生代的 3. 标记-整理算法: 4.分代收集算法: JDK1.7 JVM的垃圾收集器有 ...

  3. Thread之模板模式

    我们知道,在实际使用线程的时候,真正的执行逻辑都是写在run方法里面,run方法是线程的执行单元,如果我们直接使用Thread类实现多线程,那么run方法本身就是一个空的实现,如下: /** * If ...

  4. 进阶Java编程(5)基础类库

    Java基础类库 1,StringBuffer类 String类是在所有项目开发之中一定会使用到的一个功能类,并且这个类拥有如下的特点: ①每一个字符串的常量都属于一个String类的匿名对象,并且不 ...

  5. Spring Framework Part3 IoC and Dynamic Proxy

    spring serious of blog edit by 马士兵教育 Maven方式创建Spring工程 工程创建 1.新建项目 选择Maven Project 2.勾选 Create a sim ...

  6. 你见过老外的 Java 面试题吗 (上)?

    前言 最近无聊的在逛某 tube 网站,本来想看看大家是怎么吐槽川普的,结果无意间点进了一个老外面试 Java 的视频,对于常年面试被吊打的我瑟瑟发抖,于是决定进去一探究竟. 毕竟不是专业的后台开发, ...

  7. Server.MapPath(string sFilePath) 报未将对象引用到实例异常

    System.Web.HttpContext.Current.Server.MapPath(string sfilePath)将虚拟路径转换成物理路径.这个必须在aspx或者MVC中Action调用才 ...

  8. 将C-风格字符串用作string对象引用参数

    string类定义了一种char*到string的转换功能,这使得可以使用C-风格字符串来初始化string对象. 类型为const引用的形参其中一个属性表明:假设实参的参数类型与引用参数不匹配,但可 ...

  9. 097、Java中String类之修改字符串对象引用

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

随机推荐

  1. Linux网络常用头文件说明

    sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...

  2. Winform ComBox模糊查询

    一.添加数据源并绑定 List<string> list = new List<string>(); list.Add("张三"); list.Add(&q ...

  3. js的特殊运算符

    1)三元条件运算符: c是一个布尔值,当c为true的时候,取冒号左边a的值,否取冒号右边的b的值: 2)逗号运算符: 值从左到右依次计算,取最右边的,例如例子里的val,会取最右边的值3: 特殊运算 ...

  4. python 3.5构建WINDOWS推送服务

    import ConfigParser import os import sys cf = ConfigParser.ConfigParser() #绝对路径获取 ABSPATH=os.path.ab ...

  5. juit测试中报错:org.hibernate.HibernateException: Unable to get the default Bean Validation factory

    org.hibernate.HibernateException: Unable to get the default Bean Validation factory 解决方法: 解决方案: 在hib ...

  6. 最有用的Gulp插件汇总

    HTML&CSS autoprefixer - parse CSS and add vendor prefixes to rules by Can I Use. gulp-browser-sy ...

  7. x264 亮度信号8x8帧内预测模式

    1 该模式的8个预测方向与4x4帧内预测模式一样. 2 该模式只有High profile及更高的Profile的才有可能使用,Baseline.Main Profile.Preset为ultrafa ...

  8. 好用的meta标签

    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> 保证中文在网 ...

  9. JPA 系列教程20-JPA2.0-@CollectionTable

    @CollectionTable 指定集合表的详细信息,如果是JPA1.0必须再写一个Pojo类 ddl语句 CREATE TABLE `t_employee` ( `id` bigint(20) N ...

  10. Network: Why 1472B length of ICMP?

    when ping, specifying the length of the packet by: ping localhost -l 32 Actually default is -l 32, s ...