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<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值