获取方法:
int length() 获取字符串的长度
char charAt(int index) 获取特定位置的字符(角度越界)
int indexOf(String str) 查找子串第一次出现的索引值,如果子串没有出现在字符串中,那么则返回-1表示。
int lstlndexOf(String str) 查找子串最后一次出现的索引值,如果子串没有出现在字符串中那么则返回-1表示
代码演示:
package aa.aa;
public class Demo06 {
public static void main(String[] args) {
String str = "abc中国按中国";
System.out.println("字符串的字符个数:"+str.length());
System.out.println("根据索引值获取对应的字符:"+str.charAt(3));
System.out.println("查找子串第一次出现的索引值:"+str.indexOf("中国"));
System.out.println("查找子串最后一次出现的索引值:"+str.lastIndexOf("中国"));
}
}
运行结果:
判断方法:
boolean endsWith(String str) 是否以指定字符结束
boolean isEmpty() 是否长度为0
boolean contains(charSequence) 是否包含指定序列 应用:搜索
boolean equals(Object anObject) 是否相同
boolean equalslgnore(String anotherString) 忽略大小写是否相等
转换方法:
char[] toCharArray() 将字符串转换为字符数组
byte[] getBytes(); 把字符串装换字节数组
代码演示:
package aa;
import java.util.Arrays;
public class Demo05 {
public static void main(String[] args) {
String str = "Demo.java";
System.out.println("是否以指定的字符结束:"+str.endsWith("java"));
System.out.println("判断字符串是否为空内容:"+str.isEmpty());
System.out.println("判断字符串是否包含指定的内容:"+str.contains("Demo"));
System.out.println("判断两个字符串的内容是否一致:"+"DEMO.JAVA".equals(str));
System.out.println("判断两个字符串的内容是否一致(忽略大小写):"+"DEMO.JAVA".equalsIgnoreCase(str));
//转换的方法
char[] buf = str.toCharArray();
System.out.println("字符串组:"+ Arrays.toString(buf));
byte[] buf2 = str.getBytes();
System.out.println("字节数组:"+Arrays.toString(buf2));
}
}
运行结果:
需求1:自己实现trim方法。
代码演示:
public class Demo07 {
public static void main(String[] args) {
String str = " 传奇 博客 ";
System.out.println(myTrinm(str));
}
public static String myTrinm(String str){
char[] arr = str.toCharArray();
int startindex = 0;
int ecdindex = arr.length-1;
while (true){
if (arr[startindex]==' '){
startindex++;
}else {
break;
}
}
while (true){
if (arr[ecdindex]==' '){
ecdindex--;
}else {
break;
}
}
return str.substring(startindex,ecdindex+1);
}
}
运行结果:
需求2: 获取上传文件名 "D:\\20120512\\day12\\Demo1.java"。
代码演示:
public class Demo08 {
public static void main(String[] args) {
String str = " D:\\20120512\\day12\\Demo1.java";
getFileName(str);
}
public static void getFileName(String path){
int index = path.lastIndexOf("\\");
String fileName = path.substring(index+1);
System.out.println("文件名:"+fileName);
}
}
运行结果:
需求三:将字符串对象中存储的字符反序。 新中国好
代码演示:
public class Demo08 {
public static void main(String[] args) {
String str = "新中国好";
System.out.println(reverse(str));
}
public static String reverse(String str){
char[] arr = str.toCharArray();
for (int startlndex = 0,ecdlndex = arr.length-1;startlndex<ecdlndex;startlndex++,ecdlndex--){
char temp = arr[startlndex];
arr[startlndex] = arr[ecdlndex];
arr[ecdlndex] = temp;
}
return new String(arr);
}
}
运行结果:
字符串的特点:字符串是常量,它们的值在创建之后就不能更改。
字符串的内容一旦发生变化那么马上会创建一个新的对象。
注意:字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象。
如果需要频繁修改字符串内容,建议使用字符串缓冲类(StringBuffer)。
StringBuffer其实是一个存储字符的容器。
代码演示:
public class Demo08 {
public static void main(String[] args) {
String str1 = "hello";
String str2 = str1+"world";
System.out.println("str1与str2是同一个对象吗?"+(str1==str2));
}
}
运行结果:
如果需要频繁修改字符串内容,建议使用字符串缓冲类(StringBuffer)。
StringBuffer其实是一个存储字符的容器。
笔试题目:使用StringBuffer无惨的构造函数创建一个对象时,默认的初容量是多少?自动增长多少倍?
StringBuffer 底层是依赖了一个字符数组才能存储字符数据 的,该字符串数组默认 的初始容量是16, 如果字符数组的长度不够使用 死,自动增长1倍。
容器的具备行为:
增加
删除
修改
查看
判断
代码演示:
public class Demo08 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("java");
sb.append("java");
sb.append("java");
sb.append("java");
sb.append("java");
System.out.println(sb);
}
}
运行结果: