String是如何实现的?有哪些重要方法?

String是如何实现的?有哪些重要方法?

String是如何实现的?

以JDK8为准,String内部存储结构为char数组

常用方法

  • String的构造方法有哪些?
    • char value[]
    • String str
    • StringBuilder bulder
    • StringBuffer buffer
  • equals():比较字符串相等
    • 使用instanceof判断是否为String
    • 循环逐个字符的比较
    • 类似的有:equalsIgnoreCase忽略大小写比较字符串相等
  • compareTo():比较字符串大小
    • 循环对比所有字符
    • 当遇到两个字符不相同时,return char1-char2
    • 类似的有compareToIgnoreCase忽略大小写比较字符串大小
    • equals和compareTo比较
      • equals只能比较是否相等,compareTo可以比较大、小、相等
      • equals参数可以是Object,compareTo只能是String
      • equals返回值Boolean,compareTo返回值int
  • indexOf():查询字符串首次出现的下标位置
  • lastIndexOf():查询字符串最后出现的下标位置
  • contains():查询字符串中是否包含另一个字符串
  • toLowerCase():把字符串全部转换成小写
  • toUpperCase():把字符串全部转换成大写
  • length():查询字符串长度
  • tirm():去掉字符串首位空格
  • replace()替换字符串中某些字符
  • split():字符串按符号分割返回数组
  • join():把字符串数组转为字符串
  • toCharArray():把字符串转为char数组
  • substring(a,b):返回字符串下标[a,b)的字符

扩展

为什么String类型要用final修饰?

  • 安全:使用过程中避免了被修改
  • 高效:常量池缓存字符串

equals和‘==’的区别是什么?

  • Object中的equals就是由‘==’实现的,String类重写了equals方法
  • String中‘==’表示地址相同,equals表示字符相同
   public static void main(String[] args) {
        String a = new String("123");
        String b = new String("123");
        System.out.println(a == b);
        System.out.println(a.endsWith(b));
    }

String 和 StringBuilder、StringBuffer 有什么区别?

  • String是不可变类,StringBuffer和StringBuilder是可变类
  • StringBuilder线程不安全,StringBuffer线程安全

String 的intern()方法有什么含义?

将堆中的变量加入到常量池

String类型在JVM中如何存储的?编译器做过哪些优化?

创建String对象的方式有两种

  1. String s1 = "Java";
    s1首先在常量池查找字符串“Java”,如果存在,引用指向常量,如果不存在,在常量池中创建字符串常量,再将引用指向常量

  2. String s2 = new String("Java");
    s2直接在上创建一个变量,调用intern会将字符串存储到常量池

编译器优化

String s1 = "Ja" + "va";
String s2 = "Java";
System.out.println(s1 == s2);

显示结果为true
“Ja” + "va"直接被优化编译成了“Java”


更多Java面试复习笔记和总结可访问我的面试复习专栏《Java面试复习笔记》,或者访问我另一篇博客《Java面试核心知识点汇总》查看目录和直达链接

全部评论

相关推荐

我看到好多人都在说0offer好焦虑,结果一看是投了百度快手字节啥的。好像大家都是只想通过校招进大厂,对小公司是不考虑的吗😂可是能进大厂的难道不是只有少部分人吗,真心发问
梦想是成为七海千秋:沉默的大多数吧,喜欢晒的都是能引起共鸣的大厂,找小厂的人,别人也不认识你这个小厂,就自己偷偷找了实际上大多数人哪有什么机会能找到大厂
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务