从零开始学Java_第八章

八、API&字符串

8.1 概述

API(Application Programming Interface):应用程序编程接口。

简单理解,API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。

Java API:指的就是JDK中提供的各种功能的Java类。

8.2 String

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

注意:字符串的内容是不会改变的,它的对象在创建后不能被更改。

创建String对象的两种方式

  • 直接赋值
String name = "你好"
  • new
public String();//创建空白字符串
public String(String orginal);//根据传入的字符串创建字符串对象
public String(char[] chs);//根据字符数组,创建字符串对象
public String(byte[] chs);//根据字节数组,创建字符串对象

第一种方法内存原理:

java_string内存

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

若不存在,就创建新的字符串。

若存在,就直接复用。

第二种方法内存原理:

string_new内存

Java中String类的常见方法:

  • 比较
    • ==号比较原理:基本数据类型比数据值、引用数据类型比地址值
    • boolean equals方法
    • boolean equalsIgnoreCase方法 忽略大小写比较
  • 遍历
    • public char charAt(int index):根据索引返回字符
    • public int length():返回此字符串的长度
    • 数组的长度:数组名.length 属性
    • 字符串的长度:字符串对象.length() 方法
  • 截取
    • String substring(int beginIndex, int endIndex) 左闭右开
    • String substring(int beginIndex) 截取到末尾
  • 替换
    • String replace(旧值, 新值) 替换
8.3 StringBuilder

为什么学习StringBuilder?

  • 字符串拼接
  • 字符串的反转

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

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

StringBuilder构造方法

public StringBuilder();//创建一个空白可变的字符串对象,不含有任何内容
public StringBuilder(String str);//根据字符串的内容来创建可变字符串对象
//StringBuilder是java已经写好的类,java底层对他进行了一些特殊处理
//打印对象不是地址值而是属性值

StringBuilder常用方法

public StringBuilder append(任意类型);//添加数据返回对象本身
public StringBuilder reverse();//反转容器内容
public int length();//返回长度
public String toString();//通过toString就可以实现把StringBuilder转为String
8.4 StringJoiner
  • StringJoiner和StringBuilder一样,也可以看成一个容器,创建之后里面的内容是可变的。
  • 作用:提高字符串的操作效率,而且代码编写特别简洁。
  • JDK8出现

StringJoiner构造方法

public StringJoiner(间隔符号);//创建一个StringJoiner对象,指定拼接的间隔符号
public StringJoiner(间隔符号,开始符号,结束符号);//指定拼接的间隔符号,开始符号,结束符号

StringBuilder成员方法

public StringJoiner add(添加的内容);//添加数据并返回对象本身
public int length();//返回长度
public String toString();//返回一个字符串

8.5 字符串原理

字符串拼接的底层原理:

  • 情况1:拼接的时候没有变量,都是字符串。此时触发字符串优化机制,在编译的时候就是最终的结果了。
  • 情况2:有变量。

早期内存原理

字符串拼接

虽然使用了StringBuilder,但是效率低的原因:多次创建StringBuilder

字符串拼接原理

字符串拼接

StringBuilder源码分析:

  • 默认创建一个长度为16的字节数组
  • 添加的内容长度小于16,直接存
  • 添加的内容大于16会扩容(原来的容量*2 + 2)
  • 如果扩容之后还不够,以实际的长度为准

修改字符串的内容套路

  • substring
  • 变成字符数组.toCharArray
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值