• JAVA中新建String的详细过程


    前言:本文解决的问题

    • JAVA String s ="ABc";的过程是怎样的

    Java中的String

    Java中的String是不可改变的,一旦创建就不可再改变。常见的s1= s1+s2其实是重新创建了String。如果要创建可以更改的字符串类,建议使用StringBuilder或者StringBuffer。在回答口头的问题前先来看看String的源码。

    public final class String
        implements java.io.Serializable, Comparable<String>, CharSequence {
    
    }
    

    从String前面的修饰符我们可以看到String是final类,不可以继承。在String提供的各种方法如subString、charAt()、concat()中,没有可以更改String内部元素的,String一旦被更改其实就是创建了新的字符串对象

    Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because String objects are immutable they can be shared.

    String s ="ABc";的新建过程

    JAVA中有个字符串池,它存储在堆(heap)中,可共享。任何时候一个新的对象被创建,会首先在字符串池中检查,那个对象是否存在,如果已经存在了,则返回该对象的引用;如果不存在,则新建。具体可以看下图。
    java-string-pool

    下面是源代码演示:

    public static void main(String[] args) {		
    		String s1 = "Apple";
    		String s2 = "Mangle";
    		String s3 = "Apple";
    		System.out.println(s1==s3);
    		System.out.println(s1==s2);
    	}
    

    结果:

    true
    false

    总结

    JAVA中在使用=号创建String对象时,会线检查JAVA String pool中有没有该对象,如果有,则把引用值返回;如果没有则新建。

  • 相关阅读:
    iOS项目的目录结构和开发流程
    XCode SVN设置
    iOS 登录 注册
    ios开发常用技巧
    iOS问题解答
    iOS设计模式
    iOS开发:打包应用程序
    iOS 封装
    iOS开发常用宏
    Objective-C 类,实例成员,静态变量,对象方法,类方法(静态方法),对象
  • 原文地址:https://www.cnblogs.com/java-learner/p/9667581.html
Copyright © 2020-2023  润新知