zoukankan      html  css  js  c++  java
  • 二探String类型

    引用C#本质论的一句话:字符串是不可变的


     

    之前就已经看了这本书的前几章基础的东西,那时候觉得这句话没什么特别地方,于是就选择性掠过了。现在再一次回过头来


    再读一遍的时候,又品味到了另一种深层的意思。


          什么是不可改变的,就是String的变量当你在初始化它的时候,它就是这个值,这个内存地址单元里面放的就是这个值,永远


    不会改变。下面看这段代码:


     

    代码
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace test
    {
    class Program
    {
    static void Main(string[] args)
    {
    string str1 = "aaa";
    str1.ToUpper();
    Console.WriteLine(str1);
    Console.ReadKey();
    }
    }
    }

          结果大家觉得是什么??是AAA???如果这样想的话就是没有理解开头的那句话了。答案仍然是aaa。

    str1.ToUpper();这段代码,只会在内存中开辟一段空间存储AAA,但是他并没有将这个值赋给str1,如果需要改变str1的值,则

    str1=str1.ToUpper();这样才可以,但是这时候str1已经不是指向aaa这个值的内存地址了,而是指向AAA的内存单元。

          总的来说,每次更新str1的值,也就是重新开辟一段空间存储新的字符串,之后把这个字符串的地址赋给str1。


  • 相关阅读:
    flash盖住层的解决办法
    编译Chromium
    关于Ubuntu上的版本依赖问题
    GridBagLayout
    使用JList遇到的奇怪问题
    Swing常用整理
    Swing中改变Table的column大小
    SwingUtilities.invokeLater
    git常用命令
    小马过河(bupt 311)
  • 原文地址:https://www.cnblogs.com/cookies9/p/1744762.html
Copyright © 2011-2022 走看看