CharSequence

public interface CharSequence

字符序列接口, 实现此接口的非抽象类有String, StringBuffer, StringBuilder. 从结果来讲, 该接口的主要作用就是使得三者之间在进行一部分操作(比如查找, 比较)时变得容易.

概念说明

主要是char value和codepoint value的意义及区别, surrogate code point的含义. 简单地说char代表一个2字节的字符, codepoint才代表一个完整的字符(因为少数字符是4字节的, 比如emoji), 具体请参考其他人的文章.

CharSequence定义的方法

char charAt(int)
int length()
CharSequence subSequence(int, int)
String toString() //其实重定义toString没有用, 因为Object类已经实现了这个方法, 就当做这里是一种强调吧

java8新增2个default方法

public default IntStream chars()
public default IntStream codePoints()

分别转换为以char和codepoint为单位的java stream.注意转换后为int类型的unicode编码.

String

public final class String
implements java.io.Serializable, Comparable<String>, CharSequence

这是一个final class.

其中, Serializable 是空接口; Comparable<String>函数式接口, 其方法为int compareTo(T to).

String的构造函数 - 13个

1.以下几个容易理解(6个)

String()
String(byte[])
String(char[])
String(String)
String(StringBuilder)
String(StringBuffer)

2.从数组中截取字符(2个)

String(byte bytes[], int offset, int length)
String(char value[], int offset, int count)

3.从非Unicode编码的字节流中截取字符串, 最后一个参数为编码类型(4个)

String(byte[], String)
String(byte[], Charset)
String(byte[] bytes, int offset, int length, String charsetName)
String(byte[] bytes, int offset, int length, Charset charset)

4.从int类型的codepoint数组转化为String

String(int[] codePoints, int offset, int count)

String的静态方法

1.生成新String, 实际是调用了构造函数String(char[], int, int)

String copyValueOf(char[])
String copyValueOf(char[], int, int)
String valueOf(char[])
String valueOf(char[], int, int)

2.format, 类似于sprintf

String format(String, Object...)
String format(Locale, String, Object...)
  1. join, 可以认为split的逆操作吗
String join(CharSequence, CharSequence...) //或者是数组CharSequence[]
String join(CharSequence, Iterable<? extends CharSequence)

4.valueOf转换, 实际是调用了Integer.toString()等方法

String valueOf(char)
String valueOf(double)
String valueOf(float)
String valueOf(int)
String valueOf(Object obj) //=>obj.toString()
String valueOf(long)

String的对象方法

(除非特别说明, 否则该方法不支持正则)

1.常用, 略

char charAt(int)

boolean isEmpty()

boolean equals(Object) //override

boolean equalsIgnoreCase(String) int indexOf(int ch) //=> indexOf(ch, 0), *用int表示ch可能是因为考虑到了codepoint吧

int indexOf(int ch, int fromIndex)

int indexOf(String str) //=>indexOf(str, 0)

int indexOf(String str, int fromIndex) int lastIndexOf(int)

int lastIndexOf(int, int)

int lastIndexOf(String)

int lastIndexOf(String, int) int length() String concat(String)

String trim()

  1. 不太常用, 但是还算容易理解, 略
boolean startWith(String prefix) //=>startsWith(prefix, 0)
boolean startsWith(Stirng prefix, int offset)
boolean endsWith(String) //note: no overloads
int hashCode() //override Object#hashCode

3.compareTo, 注意其返回值的含义:

(1) this.charAt(k)-anotherString.charAt(k)

(2) this.length()-anotherString.length()

int CompareTo(String)
int CompareToIgnoreCase(String)

4.*codepoint相关, 这里还是不太明白

//这两个见CharSequence接口说明
IntStream chars()
IntStream codePoints() int codePointAt(int index)

int codePointBefore(int)

int codePointCount(int beginIndex, int endIndex)

int offsetByCodePoints(int index, int codePointOffset)

  1. 参数为CharSequence, 表明可以和StringBuffer等类型直接比较

    (还有replace(), 未列出, 见10.)
boolean contains(CharSequence)
boolean contentEquals(CharSequence)

6.get/set/to

(String是常量字符串当然没有set...)

byte[] getBytes()
byte[] getBytes(String) //设置编码
byte[] getBytes(Charset)
void getChars(int srcBegin, int srcEnd, char[] dst[], int dstBegin) char[] toCharArray()

String toLowerCase()

String toLowerCase(Locale) //设置Locale, 使用其他语言的大小写转换规则

String toUpperCase()

String toUpperCase(Locale)

7.intern

native String intern() //*可能是从字符串池中寻找是否有相同的字符串然后修改引用指向该字符串

8.正则表达式相关, 可以从参数名确定

(还有replaceAll()replaceFirst(), 未列出, 见10.)

boolean matches(String)
String[] split(String)
String[] split(String regex, int limit) //最多切分limit次

9.*不太理解...

boolean regionMatches(boolean, int, String, int, int)
boolean regionMatches(int, Stirng, int, int)
  1. replace
String replace(char, char)
String replace(CharSequence, CharSequence)
String replaceAll(String, String) //支持正则
String replaceFirst(String, String) //支持正则

11.substring

条件: 0<=beginIndex<=endIndex<=length, 注意和JavaScript或python的类似函数区分

CharSequence subSequence(int, int) //只是返回值不同
String substring(int beginIndex, int endIndex)
String substring(int beginIndex) //=>substring(beginIndex, this.length() - beginindex)
      </div>
</div>
posted @
2019-06-12 15:33 
星朝 
阅读(...) 
评论(...) 
编辑 
收藏

最新文章

  1. Logcat使用总结
  2. Android中的动画效果
  3. ion-refresher 下拉更新数据
  4. swift三方库
  5. 解决嵌入WinForm的WPF控件无法显示图片问题
  6. 经典设计:30个另类的 404 not found 页面设计
  7. POJ2763 Housewife Wind(DFS序)
  8. RTSP协议、RTMP协议、HTTP协议的区别
  9. 数据库SQL Server与C#中数据类型的对应关系
  10. 肾果手机App Store切换区域(无需Visa或者万事达)
  11. Android Activiy的作用
  12. poj 1083 Moving Tables_dp
  13. 浙大pat 1012题解
  14. webView缩放
  15. ios随机数不重复
  16. 使用BootStrap框架设置全局CSS样式
  17. u3d开发中可能会遇到的设计模式
  18. POJ 1639 Picnic Planning 最小k度生成树
  19. ZOJ 4070 - Function and Function - [签到题][2018 ACM-ICPC Asia Qingdao Regional Problem M]
  20. M0 M4时钟控制(一)

热门文章

  1. 10分钟学会Python
  2. 【JZOJ4762】【NOIP2016提高A组模拟9.7】千帆渡
  3. 了解apache与tomcat的关系
  4. Java练习 SDUT-2246_时间日期格式转换
  5. el-table中加载图片问题
  6. 【NS2】学习点滴
  7. Android 高仿微信语音聊天页面高斯模糊效果
  8. C++四:继承与派生
  9. POJ-3616_Milking Time
  10. 最长公共子序列(LCS)、最长递增子序列(LIS)、最长递增公共子序列(LICS)