android学习札记第5章之字符串处理javaapi2
1、字符串的重要特性:不可变(字符属性是私有的,没有修改字符的方法)。
字符串用加号“+”连接,效率低。
如:
String d=a+b+c;:效率低
String e="abc"+"def"+"ghi";:效率高//编译器,将代码直接编译成String e="abcdefghi";
2、创建对象:字符串是内部封装的一个char[]数组,所以有两种方式:
String b="hello";
String a=new String(new char[]{'h','e','l','l','o'});
3、第一次用到一个字面值时会在“字符串常量池”中创建对象分配内存,之后再一次用到相同的字面值,从“常量池”获取已经存在的对象,而不会新建对象,等号“==”比较的是内存地址。
如:"abc"=="abc"返回true,"abc"==new char[]{'a','b','c'}返回false,如需比较每个字符,就用String类中equals方法比较。
注:
String s1="a";
String s2="b";
System.out.println(s1+s2=="a"+"b");//返回false,因为字符串变量相加不进行优化,内存地址不同。
System.out.println("ab"=="a"+"b");//返回true,因为内存地址相同,直接取常量池里的字符串。
4、String字符串的方法:
charAt(int index):字符串查找1
toUpperCase():新字符串变为大写
toLowerCase():新字符串变为小写
length():字符串长度
compareTo(String anoterString):比较字符串大小,当前字符串大返回正数,否则负数,相同返回0。
startWith(String s):是否以字符串开头
endsWith(String s):是否以字符串结尾
equals(Object o):比较相等
equalsIgnoreCase(Object o):忽略大小写比较相等
indexOf(String s):获得字符串的起始位置
intdexOf(String s,int index):从index开始找,返回s的位置
lastIndexOf(String s):从后往前找字符串,返回位置
replace(char a,char b):把a替换成b
substring(int a):截取从a开始的字符串
substring(int a,int b):截取a到b之间的字符串
trim():去除头尾空格
String.valueOf:将任何类型的数据转为字符串
getByte():把字符串转化为byte数组
5、String练习:
①:从email提取名字部分,判断字符串中是否含有@和点“.”。
②:判断字符串是否是回文。
③:反转字符串。
1、StringBuilder是可变的字符序列,封装了一个char[]字符数组,提供一组对内部字符修改的方法。
可以代替字符串,做高效率的字符串连接。
StringBuilder sb=new StringBuilder();
sb.append();
2、创建对象:
StringBuilder sb=new StringBuilder();//空串
StringBuilder sb=new StringBuilder("abc");//"abc"
3、StringBuilder字符串的方法:
append()追加字符串
delect(int start,int end):删除[start,end)范围的字符串
delectCharAt(int index):删除index位置的字符串
insert(int index,子串):从index位置插入子串
replace(int start,int end,String str):将[start,end)范围的字符串替换为str
reverse():反转字符串
setCharAt(int index,char ch):将index位置的字符替换为ch
toString():转化为String格式
4、java.lang.StringBuffer用法和java.lang.StringBuilder类似。
StringBuilder线程不安全,单线程使用StringBuilder;
StrringBuffer线程安全,多线程使用StringBuffer,但在单线程下效率没StringBuilder高,所以单线程用StringBuilder。
5、StringBuilder和StringBuffer练习:
爱好选择:从多个多选框把爱好中选择出来,并显示,若取消了选择,也要从显示的字符串中删除。
1、让用户输入字符串,去除重复的字符。如:aabbbbccaabbcc->abc。
2、从字符串中找到一个子串出现的所有位置。
如:输入:abc abc abc。再输入查找的子串:bc->输出位置。