• 关于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";
    10 
    11             string c1 = "aaabbb";        // 定义"aaabbb"
    12             string c2 = "aaa" + "bbb";   // "aaa"和"bbb"都是常量, 合成为"aaabbb"指向c1
    13             string c3 = a1 + "bbb";      // a1是变量, 则给c3分配新的空间
    14             string c4 = a1 + b1;         // 同上, c4分配新的空间
    15             string c5 = a1 + b1;         // 同上, c5分配新的空间
    16 
    17             Console.WriteLine(object.ReferenceEquals(c1, c2));  //True
    18             Console.WriteLine(object.ReferenceEquals(c1, c3));  //False
    19             Console.WriteLine(object.ReferenceEquals(c1, c4));  //False
    20             Console.WriteLine(object.ReferenceEquals(c3, c4));  //False
    21             Console.WriteLine(object.ReferenceEquals(c5, c4));  //False
  • 相关阅读:
    大数据集群迁移的那一夜是怎么过的
    什么是Lambda架构
    从0到1搭建自助分析平台
    业务重要?还是技术重要?
    如何从0到1搭建大数据平台
    从0到1搭建大数据平台之数据采集系统
    高频面试题:秒杀场景设计
    面试官:面对千万级、亿级流量怎么处理?
    来自朋友最近阿里、腾讯、美团等P7岗位面试题
    《我想进大厂》之JVM夺命连环10问
  • 原文地址:https://www.cnblogs.com/Freeway/p/stringRef.html
Copyright © 2020-2023  润新知