zoukankan      html  css  js  c++  java
  • String和常量池

    1.Java 会确保一个字符串常量只有一个拷贝

     2.用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间

    3.编译器可以在编译期间确定的,如常量或者final修饰的,则在编译器优化确定

    String s1="abc";

    String s2="abc";

    String s3="a"+"bc"  //注意,编译器会优化成:String s3="abc";

    String s4=new String("abc");

    String s5 = String.valueOf(s4);

    String s6 = new String(str4);

    简言之,valueOf和“”这种直接的,采用缓冲池里面的值

    但是,String s5 = String.valueOf(s4);    // valueOf 的底层,如果传进来是一个String对象,直接返回这个String的地址   所以相当于  String s5 = s4

    注意,new String()肯定会创建新的对象 ,但是由于String的构造方法String(String str),新创建的String的value,hash会指向传入的对象的对应属性

    二.String的常见注意事项:

      1.replace与replaceAll。  都是替换全部的,一个是完全匹配,一个是基于正则表达式的。

  • 相关阅读:
    关于非旋转Treap
    CSP2019第二轮-划水游记
    题解 Luogu P3370
    CF926B Add Points
    日常卡题
    关于SPFA
    用Docker部署自己的JupyterHub
    请不要在JDK7及以上用Json-lib了
    SQL Server 2000向SQL Server 2008 R2推送数据
    .NET实现微博粉丝服务平台接口
  • 原文地址:https://www.cnblogs.com/heyboom/p/9112948.html
Copyright © 2011-2022 走看看