JAVA之PAI&字符串

1、API(Application Programming Interface):应用程序编程接口
JAVA API:指的是JDK中提供的各种功能的java类
2、字符串

  • String

          1.java.long.String类代表字符串
          2.字符串的内容是不会发生改变的,它的对象在创建后不能被更改
          3.创建String对象的两种方式:直接赋值 new 构造方法

         

         4.当使用双引号直接赋值时,系统会检查字符串在串池中是否存在 不存在则创建新的,存在则直接复用

         5.比较:
            ==号比较:基本数据类型比较的是数据值,引用数据类型比较的是地址值。
           字符串比较:a【boolean equals方法(要比较的字符串) 完全一样结果才是true,否则为false】
                                 b【boolean equalsIgnoreCase(要比较的字符串) 忽略大小写的比较】
         6.遍历字符串:public char charAt(int index):根据索引返回字符
         7.public int length():返回此字符串的长度
         8.String substring(int beginIndex, int endIndex) 截取 【包头不包尾,包左不包右。只有返回值才是截取的小串】
         9.String substring(int beginIndex) 截取到末尾
         10.String replace(旧值,新值) 替换【只有返回值才是替换之后的结果】

  • StringBuilder

         1. StringBuilder可以看作是一个容器,创建之后里面的内容是可变的
         2.作用:提高字符串的操作效率
         3.StringBuilder构造方法

         

         4.StringBuilder成员方法【常用方法】

         

         5.使用场景:字符串的拼接;字符串的反转

  • StringJonier

         1.是容器,创建之后里面的内容是可变的
         2.作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用
         3.JDK出现的
         4.构造方法:

         

         例:
         StringJoiner sj = new StringJoiner("---"); //1---2---3
          StringJoiner sj = new StringJoiner(",","[","]");[1,2,3]
         5.成员方法:

         

         

  • StriingBuffer
  • Pattern
  • Matcher

3、字符串原理

  • 字符串存储的内存原理
    • 直接赋值会复用字符串常量池中的;new出来不会复用,而是开辟一个新的空间
  • ==号比较的是什么?
    •  基本数据类型比较数据值;引用数据类型比较地址值
  • 字符串拼接的底层原理
    • 一个加号,堆内存中俩对象
    • 如果没有变量参与,都是字符串直接相加,编译之后就是拼接之后的结果,会复用串池中的字符串
    • 如果有变量参与,每一行拼接的代码,都会在内存中创建新的字符串,浪费内存。

 

 

  • StringBuilder提高效率原理图
    • StringBuilder是一个内容可变的容器,所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存 字符串拼接的时候,如果有变量:
      JDK8以前:系统底层会自动创建一个StringBuilder对象,然后再调用其append方法完成拼接。
      拼接后,再调用其toString方法转换为String类型,而toString方法的底层是直接new了一个字符串对象
      JDK8版本:系统会预估要字符串拼接之后的总大小,把要拼接的内容都放在数组中,此时也是产生一个新的字符串。
  • StringBuilder源码分析
    • 1—默认创建一个长度为16的字节数组
      2-添加的内容长度小于16,直接存
      3-添加的内容大于16会扩容(原来的容量*2+2)
      4-如果扩容之后还不够,以实际长度为准

 

posted @   爱码小能手  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示