Java中字符串为了解决存储内存做了那些优化

字符串为了解决存储内存做了那些优化

  1. 字符串不可以变:定义的字符串存放在常量池中,下次定义相同的字符串时就直接调用原先的那个字符串的地址,减少了内存的消耗

  2. 使用StringBuffer和StringBuilder不可变的性质,如果按照字符串原先的不可变性质,如果对字符串进行拼接就会造成内存的大量消耗,此时使用StringBuffer和StringBuilder动态的对字符串进行拼接就解决了内存消耗的问题

  3. 字符串连接优化:在使用+好连接字符串时,对连接进行了优化,将其转为StringBuffer或StringBuilder进行连接,以此来解决新字符串耗费内存的问题

  4. JDK在9之后在底层存储字符串的实现上将char[]数组实现转为了byte实现,减少了内存的消耗

  5. intern:在java中相同内容的字符串会被放入字符串常量池中,以节省内存,但通过new String()创建的字符串不会进入字符串常量池,intern方法可以将字符串添加到字符串常量池中,实现字符串的共享

  6. 由于intern()可以避免创建多个相同的字符串实例,从而节省内存

  7. 字符串比较问题

    1. 使用比较两个字符串是否相等时,如果他们指向同一个常量池中的字符串对象,则结果为true,但通过new创建的,则结果为false,intern()方法可以将字符串放入字符串常量池中,使得比较的结果为true

你可能感兴趣的:(java,开发语言)