Java基础 - String

  1. String表示字符串类型,属于引用数据类型,不属于基本数据类型。

  2. 在java中随便使用双引号括起来的都是String对象。例如“abc”“der”这是两个String对象

  3. 在Java中规定双引号括起来的字符串都是不可变的,也就是说“abc”在创建之后都是不可变的,不能变成abcd。

  4. 在jdk中双引号括起来的字符串,例如“zbc”都是直接存储在方法区中的“字符串常量池中”为什么sun公司要存在这里呢,因为字符串在实际开发中使用非常频繁,为了提高执行效率,所以放到方法区的字符串常量池中。

  5. String s3=new String(”abc”);

  6. String s1=”abc” 解释:s1里面存的不是”abc”,而是abc的内存地址。

  7. String类中常用的构造方法:String类已经重写了toString()方法

String类中的常用方法

  1. compareTo()方法。

通过字典中的顺序比较,如果第一个比较不出来,就用第二个进行比较。”xyasf”.compareTo(“a”) //23

  1. boolean contains(CharSequence s)方法

  2. boolean endsWith();判断字符串a是否以字符串b结尾。

  3. Boolean equlas(Object anobject);

  4. boolean equalsIgnoreCase(String anotherstring)

  5. .int indexof(String str)判断某个字符串在当前字符串中第一次出现索引下标。

  6. .boolean inEmpty()判断某个字符串是否为空字符串

  7. 判断数组长度【数组[].length】和判断字符串长度【字符串[].length()】方法不同。

  8. .int lastindexof(String str)

  9. replace(target,replacement)

将所有的target字符串都替换为replacement字符

  1. split(String regex)

将字符串以regex拆分

  1. Boolean startsWith(String prefix)

判断某个字符串是否以某个字符串开始

  1. toCharArray()将字符串返回一个Char类型的数组

  2. String toLowerCase()

  3. valueof()方法,这是String类静态方法。作用是将非字符串转换为字符串。

  4. String类为什么不可变:

  5. 源代码中,因为String类中有一个byte[]数组,这个byte[]数组被final修饰,因为数组一旦创建长度不可变,并且被final修饰的引用一旦指向某个对象之后,不可再只想其他对象,所以String类是不可变的。

  6. StringBuilder/StringBuffer为什么是可变的呢?

  7. 源代码中,StringBuilder/StingBuffer内部实际上是一个byte[]数组,这个byte[]数组没有被final写书,StringBuffer/String Builder的初始化容量记得是16,当存满之后会进行扩容,底层调用数组拷贝的方法System.arraycopy()…是这样扩容的,所以StringBuilder/StingBuffer适用于字符串的频繁拼接操作

StringBuffer

  1. StringBuffer作用是做字符串拼接。
  2. 优化StringBuffer:
    1. 在创建StringBuffer的时候尽可能给定一个初始化容量。
    2. 最好减少底层数组扩容次数,预估一下,给一个大一些的初始化容量。
    3. 关键点:给一个合适的初始化容量,可以提高程序的执行效率。
  3. 初始化创建一个容量为16byte[]的数组(字符串缓冲区对象)
  4. 字符串拼接统一调用append()方法

StringBuilder

  1. 两个区别:StringBuffer中的方法都有synchronized关键字修饰表示在多线程下运行是安全的。
  2. StringBuilder中的方法都没有synchronized关键字修饰表示在多线程下运行是不安全的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值