zoukankan      html  css  js  c++  java
  • String详解说明

          大家平时都string都不是很在意,但是每当面试碰到String的时候在“==”和equals之间就乱了,下面我来说一说String,也许不够全面,请大家多多指教,希望会帮到处于蒙圈状态的人们。

     一、Java中字符串的不变性

          String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如下所示:

              

          如果用equals比较,返回的肯定都是true,因为equals比较的是内存地址所指向的具体内容,而“==“比较的是内存地址。

          下面我给大家看一下他们的内存地址是怎么指向的。大家明白了内存的分配情况。自然就不会弄乱了。如下图:

              

    二、StringBulider和StringBuffer 类

         在Java中,除了可以使用 String 类来存储字符串,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串,那么它们之间有什么区别呢?

         1、String 类具有是不可变性。如下:

              

               运行结果如下:

               

          从运行结果中我们可以看到,程序运行时会额外创建一个对象,保存 "helloworld"。当频繁操作字符串时,就会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。在需要频繁对字符串进行修改操作时使用 StringBuilder 的效率比 String 要高至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。那么如何定义 StringBuilder 类的对象呢? 我们来看下面的代码:

              

          2、StringBuilder 类提供了很多方法来操作字符串:

           

           在下面的示例代码中,创建了 StringBuilder 对象,用来存储字符串,并对其做了追加和插入操作。这些操作修改了 str 对象的值,而没有创建新的对象,这就是 StringBuilder 和 String 最大的区别。

              

               运行结果:

               

                

              

      

         

        

  • 相关阅读:
    JAVA下使用 连接sqlserver 驱动包
    Windows 7 、Windows Server 2008 和 Windows Server 2008 R2 的支持结束
    VBoxManage命令详解
    端口扫描之王——nmap入门精讲
    rehat-server7常见服务安装与配置总结
    mysql的安装和密码管理、mysql初始密码查找、密码修改、mysql登录
    vim常用命令总结 (转)
    关于《Python绝技:运用Python成为顶级黑客》的学习笔记
    常用MySQL图形化管理工具
    Chrome谷歌浏览器离线安装包下载
  • 原文地址:https://www.cnblogs.com/chentong/p/5417561.html
Copyright © 2011-2022 走看看