方法:
记不住的方法要学会用api来查找熟悉使用
字符串有三个必须掌握的功能:
判断功能:都是boolean类型的
boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
boolean contains(String str):判断大字符串中是否包含小字符串
boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
boolean isEmpty():判断字符串是否为空。
获取功能:
* int length():获取字符串的长度。
* char charAt(int index):获取指定索引位置的字符
* int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
* 为什么这里是int类型,而不是char类型?
* 原因是:'a'和97其实都可以代表'a' 下面的都是这样的
* int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
* int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
* int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
* String substring(int start):从指定位置开始截取字符串,默认到末尾。
* String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
转换功能:
* byte[] getBytes():把字符串转换为字节数组。
* char[] toCharArray():把字符串转换为字符数组。
* static String valueOf(char[] chs):把字符数组转成字符串。
* static String valueOf(int i):把int类型的数据转成字符串。
* 注意:String类的valueOf方法可以把任意类型的数据转成字符串。
* String toLowerCase():把字符串转成小写。
* String toUpperCase():把字符串转成大写。
* String concat(String str):把字符串拼接。
String类的其他功能:
替换功能:
* String replace(char old,char new)
* String replace(String old,String new)
去除字符串两空格
* String trim()
按字典顺序比较两个字符串
* int compareTo(String str)
* int compareToIgnoreCase(String str)
和Stringbuffer的区别:
后者是可变长度和内容的,前者不是。
Stringbuffer和StringBuilder的区别就是前者是线程安全的效率相对低后者不安全效率高
关于字符串常量池:
所存储的应该是对象的引用而不是对象本身。字符串的eqauls方法重写了API里面的解释是只要 字符串序列(就是说值 比较相等)相同就返回为true
常量池的优缺点:
优点是内存得以减少 使用缺点是cpu占用会提升,但是其实因为常量池的内部实现是用的hashtable所以cpu损失还是很小的
记住字符串一旦被赋值就不会再改变,等于说要么就是引用指向了不同的对象,而且你用一般的手段也无法改变那个对象,因为你操作a,比如subString,split,或者+都会是到一个新的String的引用,而不是改变那个String对象。