Java 基础类型 —— String

0 String 的构成

  • String 内部由 char[] 构成
  • 注: string.getByte():使用;平台默认的编码方式,将 utf-16 形式的 codeunit 编码成其他默认编码形式的 byte 数组来传输
  • 注: new String(str.getByte(),“UTF-8”):这种情况,如果默认编码不是 “UTF-8” 就会乱码
  • 注: 只有 new String(str.getByte(encoding),encoding),这种情况才一定不会乱码
  • 注: 最关键的是 new String(bytes,encoding):这时,bytes 是通过网络传过来的,这里的 encoding 必须是 bytes 对应的 编码方式,才不会乱码
  • 注: 本文提到关键词说明
    • BMP:unicode 字符集中的 第 0 平面,既,字符集对应的数值在 [0~0xFFFF] 上
    • 辅助平面:字符集对应的数值 [0x10000~0x10FFFF] 上
    • code point: unicode 字符集中字符对应的 4 字节数值
    • code unit: UTF-16 编码 code point 后的 2 字节数值,如果 code point 在 BMP 上,一个 code point 对应一个 code unit,如果在 辅助平面 上,一个 code point 对应 2 个 code unit
    • 字符: 表示 java 中的 char 元素,其实 char 说成字符是不准确的,真实的 char 是 UTF-16 的编码(code unit)
    • unicode 字符: 表示 unicode 字符集中的字符,也既是真实看到的字符

1 String 构造函数

构造函数 描述 补充
String(byte[] bytes) 创建一个字符串,使用平台默认 charset 通过平台默认的 charset(一般为 UTF-8)将 bytes 解码为 UTF-16形式的 codeunit
String(byte[] bytes, Charset charset) 指定 charset
String(byte[] bytes, int offset, int length, Charset charset) 指定 bytes 子序列
String(byte[] bytes, String charsetName)
String(byte[] bytes, int offset, int length, String charsetName)
String(char[] value)
String(char[] value, int offset, int count)
String(int[] codePoints, int offset, int count) 将 unicode 的 codepoints 编码成 UTF-16 的 code unit 存储

2 String 方法

2.1 indexOf/contains
返回类型 方法名 描述 补充
int indexOf(int ch) 第一个 code point 码为 ch 的下标 如果 ch 在辅助平面,返回的是 highSurrogate 的下标
int indexOf(int ch, int fromIndex) 从 fromIndex 开始的
int indexOf(String str) 第一个 str 字符串 的位置 这个就是简单的内部 char[] 比较
int indexOf(String str, int fromIndex) 从 fromIndex 开始的
int lastIndexOf(int ch) 最后一个 如果 ch 在辅助平面,返回的是 highSurrogate 的下标
int lastIndexOf(int ch, int fromIndex)
int lastIndexOf(String str)
int lastIndexOf(String str, int fromIndex)
boolean contains(CharSequence s) 内部调用 indexOf(s.toString)
2.2 equals/length
返回类型 方法名 描述 补充
boolean contentEquals(CharSequence cs) 字符序列的比较 只要是字符序列,就可能返回 true
boolean contentEquals(StringBuffer sb) 内部调用 上面
boolean equals(Object anObject) String 比较 只有 String 类型,才可能返回 true
int length() 返回字符串的长度 注:是 char[] 的长度,可能比unicode字符的长度大
2.3 compare/hashcode
返回类型 方法名 描述
int compareTo(String anotherString) “b”.compareTo(“C”) 返回 31
int compareToIgnoreCase(String str) “b”.compareTo(“C”) 返回 -1
int hashCode()
2.4 charAt/codePoint
返回类型 方法名 描述 补充
char charAt(int index) 返回字符串第 index 位置的字符 value[index]
int codePointAt(int index) 返回字符串第 index 位置的code point
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值