• ------------------字符串总结-------------------


    1.字符串的初始化方式:

    常量方式  String xx = "aa" ;

    对象方式  String xx  =  new  String ("aa") ;

    2.如何理解字符串的不可变性?

    从内存角度解释  :当你给一个字符串重新赋值之后,老值并没有在内存中销毁,而是重新开辟一块空间存储新值

    从源代码角度解释 :  String类 final  其中包含的字符数组也是 final

    String被设计成不可变的主要目的是为了安全和高效

    3.要注意常量初始化和对象初始化方式的区别?

    首先对于String a="abc"这种初始化方式,计算机会在栈内存中分配一段存储地址,然后将“abc”存入,并且在栈中保存首地址(句柄)a,
    而String b= new String("abc");这种初始化方式的话,计算机首先是在堆内存中分配存储地址,新建一个String对象,将“abc”存入堆内存,
    并且在栈内存中产生一个首地址“b”指向该堆存储内存; 所以当调用a时,系统会先在栈中寻找是否存在a指向,若存在直接调用,而调用b时每一次都会在堆内存中新建对象,然后改变其首地址的指向

    4.字符串的常用方法

    StringBuilder    StringBuffer    String 区别  ?

    (1)每次String拼接小字符串,每次拼接都会生成一个String对象

    而StringBuilder    StringBuffer 都是在原有对象直接拼接字符串

    (2)StringBuilder线程非安全,拼接字符串效率高

    (3)如果StringBuilder    StringBuffer 被直接定义在某个方法内部,那就是线程安全的,直接使用StringBuilder即可

    (4)如果StringBuilder    StringBuffer 被直接定义在某个方法外部,那就是线程非安全的,直接使用StringBuffer即可

    使用方式:StringBuilder .append(要拼接的字符串)   

  • 相关阅读:
    [CentOS] SSH 免密钥登录
    [WPF] Wait for a moment.
    [Tool] Open Live Writer 插件更新
    [Tool] 博客园的 SyntaxHighlighter 代码高亮
    [Tool] Open Live Writer插件开发
    [Oracle] Bulk Insert Data
    [C1] C1ComboBox 的非编辑状态优化
    CentOS7用阿里云Docker Yum源在线安装Docker 17.03.2
    什么时候该用readfile() , fread(), file_get_contents(), fgets()?
    Aliyun OSS Nginx proxy module(阿里云OSS Nginx 签名代理模块)
  • 原文地址:https://www.cnblogs.com/helloaugust/p/11561387.html
Copyright © 2020-2023  润新知