美文网首页
浅谈String

浅谈String

作者: 吃货_ee62 | 来源:发表于2020-05-06 18:00 被阅读0次

String 用于表示字符串,生成的时候有两种方式:

1 .用双引号 String str1="god" ;

\color{red}{注:}此方法生成的字符串,引用地址指向\color{blue}{字符串常量池}\color{green}{生成一个对象},先去字符串常量池中寻找是否有此字符串,若是有,则直接拿来引用,反之,存储此字符串在字符串常量池中。

2.用String类的构造函数String str2=new String("god");

\color{red}{注:}此方法生成的字符串,引用地址指向\color{blue}{堆}\color{green}{生成一个或者两个对象},先去字符串常量池中寻找是否有此字符串,若是有,则在字符串常量池中复制一个到堆(heap)中,则此方法生成的字符串生成一个对象,若是没有,就在字符串常量池和堆中创建此对象,而不是在堆中创建此对象复制到字符串常量池中,则此方法生成的字符串生成两个对象。

\color{red}{String 是被final修饰的类,因为final修饰的类不能被继承,final类中的方法默认是final的,所以String} \color{red}{类不能被继承,并且它的成员方法都默认为final方法,String 对象创建后不可改变,String对象的任} \color{red}{何改变都不影响到原对象,相关的任何操作都会生成新的对象。(所以常量池中不会出现两个相同的字符串)}

同一个字符串反复出现,如何节省内存空间的问题:
1.7环境

注: ==比较的是变量(栈)内存中存放的对象的内存地址,则比较的是 是否为相同对象;equal比较的是值是否相等

当多次new一个相同的字符串的时候,(new String都是在堆上创建字符串对象),可以用String的intern()方法,str2.intern();调用intern(),编译器会将字符串(1.7后则是将在堆上的地址引用复制到常量池)添加到常量池中,并返回指向该\color{red}{常量池中的引用}。因常量池中不会出现两个相同的字符串,所以下次调用intern()的时候,直接返回\color{red}{常量池中的引用(堆地址)}

则:

 //第一行
   String a="happy";
        //第二行
  String b=new String("happy");     
  a==b//返回 false
  a==b.intern() //返回 false
//第一行
  String b=new String("happy");    
//第二行
  String a="happy";
  str1==str2   //返回 false
  str1==str2.intern() //返回 true

待续

相关文章

  • 浅谈String、StringBuffer和StringBuil

    浅谈String、StringBuffer和StringBuild的区别 一、可变与否 String是不可变的,是...

  • 2019-08-20

    浅谈String、StringBuffer 、StringBuilder和StringJoiner 可变性 Str...

  • 浅谈String

    String 用于表示字符串,生成的时候有两种方式: 1 .用双引号 String str1="god" ; 此...

  • Java中String、StringBuilder和String

    参考浅谈Java字符串Java之字符串操作String、StringBuilder和StringBuffer

  • 浅谈String,StringBuilder,StringBuf

    首先,说一下这三者之间常见的问题 1. String和new String的区别 2. String和String...

  • 浅谈Java String内幕

    简书 占小狼转载请注明原创出处,谢谢! 前言 String字符串在Java应用中使用非常频繁,只有理解了它在虚拟机...

  • 浅谈StringBuilder

    简书 占小狼转载请注明原创出处,谢谢! 连接符号 "+" 本质 在 浅谈Java String内幕(1) 中,字符...

  • Java

    1. JVM 你真的了解String类的intern()方法吗? Java虚拟机架构 内存管理和垃圾回收 浅谈JV...

  • 浅谈Java String.intern()

    简书 占小狼转载请注明原创出处,谢谢! String.intern()原理 String.intern()是一个N...

  • 浅谈java中的String

    第一,简介 String是java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它是典型的immu...

网友评论

      本文标题:浅谈String

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