subString(a,b)
- 截取a ,a+1,.....不包含b
- 长度为(b-a)
拼接:用加号拼接两个字符串
- 一个为非字符串,进行拼接后将自动转为字符串
不可变字符串
- 编译器可以让字符串共享
检测字符串是否相等
- s.equals()
- s.equalsIgnoreCase();
一定不能使用==运算符检测两个字符串是否相等 !这个字符串只能够确定两个字符串是否放置同一个位置上。当然,如果字符串放置在同一个位置上,他们必然相等
- 举例:这样判断就会不严谨
String greeting = "hello";
if(greeting=="hello")
//probably true
if(greeting.subString(0,3)=="hel")
//probably false 内容一样但是有可能出错
字符串和空串
- 可以调用一下代码检查一个字符串是否为空
if(str.length()==0)
或
if(str.equals(" "))
- 空串是一个java对象,有自己的串长度0 和内容空。
不过String变量还可以存放一个特殊的值为null.这表示目前没有对象与该变量关联
字符串API
- char charAt(int index)
- int codePointAt(int index)
- int compareTo(String other) 按照字典顺序,如果字符串位于other之前,返回一个负数。相等,返回0
-int compareToIgnoreCase() - boolean endWith(String suffix)
- boolean equals(Object other)
- boolean equalsIgnoreCase(String other)
- int indexOf(String str)
- int indexOf(Strng str ,int fromIndex)
- int indexOf(int cp) 代码点cp
- int indexOf(int cp, int fromIndex)
- int lastIndexOf(Stirng str)
- int lastIndexOf(Strng str ,int fromIndex)
- int lastIndexOf(int cp) 代码点cp
- int lastIndexOf(int cp, int fromIndex)
返回与字符串或代码点cp匹配的最后一个子串的开始位置,这个位置从原始串尾端或fromIndex开始计算
问题:为什么代码点是int类型的?
在Java当中 一个较小数据类型是直接可以赋值给大数据类型的而且在参数传递的时候同理,你可以写这样一行代码:
int data = 'a';
或者:
char c = 'e';
int i = c;//赋值是没有问题的
这样的赋值也没有错误。所以Java当中在参数匹配的时候是可以用char类型参数匹配int类型参数的定义的
s1.indexOf('e')等价于s1.indexOf(101)
在这里用e的ASCII编码来匹配int类型参数
- int length()
- int codePointCount(int startIndex , int endIndex)
- String replace(CharSequence oldString, CharSequence newSting)
- boolean startWith(String prefix)
- String subString(int beginIndex)
- String subString(int beginIndex,int endIndex)
- String toLowerCase()
- String toUpperCase()
- String trim()
构建字符串StringBuilder
- int length()
- StringBuilder append(String str) 返回this
- StringBuilder append(char c)
- StringBuilder appendCodePoint(int cp)
追加一个代码点,并将其转换为一个或两个代码单元并返回this - void setChatAt(int i,char c) 将第i个代码单元设置为c
- StringBulider insert(int offset ,String str) 在offset处插入一个str并返回this
- StringBulider insert(int offset ,char c)
- StringBuilder delete(int startIndex ,int endIndex)不包含endIndex
- String toString()
格式化输出
每一个以%字符开始的格式说明符都用相应的参数替换。格式说明符尾部的转化符将指示被格式化的数值类型:f表示浮点数 s表示字符串 d表示十进制数
System.out.println("%,.2f",10000.0/3.0) 输出: 3,333.33
循环语句:总之一句话:括号里面的都是满足执行,不满足退出