美文网首页
2020-03-23-Java的特殊类型String

2020-03-23-Java的特殊类型String

作者: 耿望 | 来源:发表于2020-03-24 15:52 被阅读0次

    格式化和正则表达式

    public static void main(String[] args) {
        String content = String.format("format, %d, %b, %s, %#x, %.2f", 1, true, "zgw", 17, 0.5f);//1
        System.out.println(content);
        List<String> list = Arrays.asList(content.split(","));//2
        list.forEach(k -> System.out.println(k));
    }
    

    java提供了两种方式,可以对字符串进行处理,分别是注释1处的format和注释2处的split方法。

    常量池

    为了避免对象的频繁创建和回收,JVM虚拟机有常量池的概念,比如下面的代码,在常量池中只会存在一个字符串实例"abc"。

            String aStr = "abc";
            String bStr = "abc";
            String cStr = new String("abc");
    

    更经典的问题是,下面这行代码,实际上创建了两个对象,一个在常量池中,一个在java堆内存区域。

    String a = new String("abc");
    

    同时,String提供了intern方法,来向运行时常量池添加变量,如果变量已经存在,则返回该变量的引用。比如下面这段代码,在java8上面输出的结果是false,true。

    String a = new String("abc");
    String b = "abc";
    System.out.println(a == b);
    System.out.println(a.intern() == b);
    

    参考:

    https://tech.meituan.com/2014/03/06/in-depth-understanding-string-intern.html
    https://blog.csdn.net/lonely_fireworks/article/details/7962171

    相关文章

      网友评论

          本文标题:2020-03-23-Java的特殊类型String

          本文链接:https://www.haomeiwen.com/subject/xmsgyhtx.html