[Java]字符串

字符串

String概述

java.lang.String类代表字符串,Java程序中的所有字符串文字都为此类的对象

String是Java定义好的一个连,定义在java.lang包中,所以使用的时候不需要导包

注意点:字符串的内容是不会发生改变的,它的对象(值)在创建后不能被更改

创建String对象的两种方式

  1. 直接赋值

  2. new

    构造方法说明
    public String()创建空白字符串,不含任何内容
    public String(String original)根据传入的字符串,创建字符串对象
    public String(char[] chs)根据字符数组,创建字符串对象
    public String(byte[] chs)根据字节数组,创建字符串对象

Java内存模型

当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在

不存在:创建新的

存在:复用

==号比的是什么

基本数据类型比较的是数据值

引用数据类型比较的是地址值

字符串比较

以后只要想比较字符串的内容,就必须要用String里面的方法

 boolean equals方法(要比较的字符串)   //完全一样结果才是true,否则为false
 boolean equalslgnoreCase(要比较的字符串)   //忽略大小写的比较(英文状态下的)

将选中的代码用循环包裹起来:crtl + alt + t

遍历字符串

 public char chatAt(int index):根据索引返回字符
 public int length():返回字符串的长度

数组的长度:数组名.length

字符串的长度:字符串对象.length()

截取字符串

  // 注意点:包头不包尾,包左不包右,只有返回值是截取的小串
 String subString(int beginIndex,int endIndex)   
 // 截取到末尾
 String subString(int beginIndex)

替换字符串

 //  注意点:只有返回值才是替换之后的结果
 String replace(旧值,新值)   //替换

StringBuilder

可以看成是一个容器,创建之后里面的内容是可变的

作用:提高字符串的操作效率

构造方法

方法名说明
public StringBuilder()创建一个空白可变字符串,不含有任何内容
public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象

常用方法

方法名说明
public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverse()反转容器中的内容
public int length()返回长度(字符出现的个数)
public String toString()通过toString就可以实现把StringBuilder转换为String

因为StringBuilder是Java已经写好的类,Java在底层对他做了一些特殊处理,打印对象不是地址值而是属性值

链式编程

当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法

StringJoiner概述

作用:提高字符串的操作效率,代码编写简洁

方法名说明
public StringJoiner(间隔符号)创建一个StringJoiner对象,指定拼接时的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号)创建一个StringJoiner对象,指定拼接时的间隔符号,开始符号,结束符号

成员方法

方法名说明
public StringJoiner add(添加的内容)添加数据,并返回对象本身
public int length()返回长度(字符出现的个数)
public String toString()返回一个字符串(该字符串就是拼接之后的结果)

字符串拼接的底层原理

  1. 拼接的时候没有变量,都是字符串,出发字符串的优化机制,在编译的时候就已经是最终的结果了,会复用串池中的字符串

  2. 在拼接的时候有变量,JDK8以前底层会使用StringBuilder(一个加号,堆内存中俩对象)

  3. 字符串拼接的时候有变量参与:在内存中创建了很多对象浪费空间,时间也非常慢

搜索:ctrl+n,ctrl+f12

跟进:ctrl+b

结论:如果很多字符串变量拼接,不要直接+,在底层会创建多个对象,浪费时间,浪费性能

StringBuilder提高效率原理图

所有要拼接的内容都会往StringBuilder中放,不会创建很多无用的空间,节约内存

StringBuilder源码分析

  1. 默认创建一个长度为16的字节数组

  2. 添加的内容长度小于16,直接存

  3. 添加的内容大于16会扩容(原来的容量*2+2)

  4. 如果扩容之后还不够,以实际长度为准

左右切割

选中变量,alt+enter

修改字符串内容

  1. 用subString进行截取,把左边的字符截取出来拼接到右侧去

  2. 可以把字符串先变成一个字符数组,然后调整字符数组里面的数据,最后再把字符数组变成字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值