ToB企服应用市场:ToB评测及商务社交产业平台

标题: java中String类型的相关知识的简单总结 [打印本页]

作者: 天津储鑫盛钢材现货供应商    时间: 2023-1-7 20:03
标题: java中String类型的相关知识的简单总结
java中String类型的相关知识总结

一、常用方法:

1.构造方法:

2. 实例方法:

​                charAt(int index) char
​                codePointAt(int index) int
​                getBytes() byte[]
​                getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) void
​                toCharArray() char[]
​                length() int
​                codePointCount(int beginIndex,int endIndex) int
​                concat(String str) String
​                substring(int beginIndex,int endIndex) String
​                split(String regex) String[]
​                trim() String
​                toUpperCase()/toLowerCase String
​                replace(char oldChar,char newChar) String
​                replace(CharSequence target,CharSquence replacement) String
​                replaceAll(String regex,String replacement) String
​                replaceFirst(String regex,String replacement) String
​                contains(CharSequence s) boolean
​                endsWith(String suffix)/startsWith(String prefix) boolean
​                equals(Object anObject) boolean
  1. public boolean equals(Object anObject) {
  2.         if (this == anObject) {
  3.             return true;
  4.         }
  5.         if (anObject instanceof String) {
  6.             String anotherString = (String)anObject;
  7.             int n = value.length;
  8.             if (n == anotherString.value.length) {
  9.                 char v1[] = value;
  10.                 char v2[] = anotherString.value;
  11.                 int i = 0;
  12.                 while (n-- != 0) {
  13.                     if (v1[i] != v2[i])
  14.                         return false;
  15.                     i++;
  16.                 }
  17.                 return true;
  18.             }
  19.         }
  20.         return false;
  21.     }
复制代码
​                matches(String regex) boolean
​                indexOf(int ch/String str)/lastIndexOf()
3. 静态方法:

​        String.format(String format,Obect... args) String
​        String.valueOf(xxx) String
二、底层实现:

jdk1.8中String类型底层就是一个char数组:
  1. public final class String
  2.     implements java.io.Serializable, Comparable<String>, CharSequence {
  3.     /** The value is used for character storage. */
  4.     private final char value[];
  5. }
复制代码
三、不可变性:

String最为人所津津乐道的便是它的不可变性(immutable),这里就引出两个问题,String如何做到不可变的,以及不可变的好处
1. 如何实现不可变:

jdk1.8中String的字符存储在一个char数组里
2. 不可变的好处:

3. String和StringBuffer和StringBuilder的区别:

四、缓存池:

1.字符串常量池(String pool)里存放着所有的字符串字面量
  1. String a="aaa";
  2. String b="aaa";
  3. //a,b引用到的String pool里的同一个对象
  4. a==b//true
复制代码
2. new 出来的String对象放在堆区
  1. String a=new String("aaa");
  2. String b=new String("aaa");
  3. a==b//false
  4. a=="aaa"//false
  5. //这里实际是先创建字面量"aaa",再去创建对象的
复制代码
new创建字符串时首先查看池中是否有相同值的字符串,如果有,则拷贝一份到堆中,然后返回堆中的地址;如果池中没有,则在堆中创建一份,然后返回堆中的地址(注意,此时不需要从堆中复制到池中,否则,将使得堆中的字符串永远是池中的子集,导致浪费池的空间)!
3. intern()方法

先判断字符串常量池里是否已经有了这个字符串,如果有就返回常量池中该字符串的引用,没有就在常量池中添加并返回常量池中的引用
  1. String a=new String("aaa");
  2. a=="aaa"//false
  3. a=a.intern()
  4. a=="aaa"//true
复制代码
五、参考资料

鄙人只是一名在读的软件工程专业的本科生,正在复习找工作,故而将复习时遇到的一些有意思的东西总结出来,既是加深理解,也是便于日后复习。
鄙人才疏学浅,若文中有谬误之处,还望诸位不吝斧正,以免误人子弟。若有同道中人想一同讨论学习,也可以联系我=>2938189276@qq.com。未经作者允许,请勿转载!
路漫漫其修远兮,吾将上下而求索。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4