String 的构造方法:
String() 创建一个空内容 的字符串对象。
String(byte[] bytes) 使用一个字节数组构建一个字符串对象
String(byte[] bytes, int offset, int length)
bytes : 要解码的数组
offset: 指定从数组中那个索引值开始解码。
length: 要解码多个元素。
String(char[] value) 使用一个字符数组构建一个字符串。
String(char[] value, int offset, int count) 使用一个字符数组构建一个字符串, 指定开始的索引值,与使用字符个数。
String(int[] codePoints,int offset,int count)
String(String original)
记住: 使用字节数组或者字符数组都可以构建一个字符串对象。
2.2 获取方法
int length() 获取字符串的长度
char charAt(int index) 获取特定位置的字符 (角标越界)
int indexOf(String str) 查找子串第一次出现的索引值,如果子串没有出现 在字符串中,那么则返回-1表示。
int lastIndexOf(String str) 查找子串最后一次出现的索引值 , 如果子串没有出现 在字符串中,那么则返回-1表示
2.3 判断方法
boolean endsWith(String str) 是否以指定字符结束
boolean isEmpty()是否长度为0 如:“” null V1.6
boolean contains(CharSequences) 是否包含指定序列 应用:搜索
boolean equals(Object anObject) 是否相等
boolean equalsIgnoreCase(String anotherString) 忽略大小写是否相等
2.4 转换方法
char[] toCharArray() 将字符串转换为字符数组
byte[] getBytes();
字节数组与字符数组、字符串他们三者之间是可以互相转换。
其他方法
String replace(String oldChar, String newChar) 替换
String[] split(String regex) 切割
String substring(int beginIndex) 指定开始 的索引值截取子串
String substring(int beginIndex, int endIndex)指定开始 与结束的索引值截取子串
String toUpperCase() 转大写
String toLowerCase() 转小写
String trim() 去除字符串首尾的空格
需求1:自己实现trim的方法。
需求2: 获取上传文件名 “D:\20120512\day12\Demo1.java”。
需求3: 将字符串对象中存储的字符反序。 新中国好 —–> 好国中新
需求4: 求一个子串在整串中出现的次数 。
package cn.itcsat.string;
import java.lang.reflect.Array;
/*
需求1:自己实现trim的方法。
需求2: 获取上传文件名 "D:\\20120512\\day12\\Demo1.java"。
需求3: 将字符串对象中存储的字符反序。 新中国好 -----> 好国中新
需求4: 求一个子串在整串中出现的次数 。
*/
public class Stringtest {
public static void main(String[] args) {
String str =" 你好 很好 ";
System.out.println(str);
System.out.println(myTrim(str));
str = "D:\\20120512\\day12\\Demo1.java";
/*test(str);*/
getFileName(str);
str = "新中国好";
System.out.println("翻转后的字符串:"+ reverse(str));
System.out.println("翻转后的字符串:"+ testreverse(str));
str = "abcjavaabcjavaphpjava"; //java
getCount(str, "java");
}
private static String testreverse(String str) {
char[] arr=str.toCharArray();
for(int b=0, e= arr.length-1;b<e;b++,e--)
{
char a=arr[b];
arr[b]=arr[e];
arr[e]=a;
}
return new String(arr);
// TODO Auto-generated method stub
}
//统计子串出现 的次数
public static void getCount(String str,String target){
int count = 0 ; //用于记录出现的次数
int fromIndex = 0; // 记录从那个索引值开始寻找目标子串
while((fromIndex = str.indexOf(target, fromIndex))!=-1){
//如果indexof方法返回 的不是-1,那么就是已经找到了目标 元素。
count++;
fromIndex = fromIndex+target.length();
}
System.out.println("出现的次数:"+ count);
}
public static String reverse(String str){
char[] arr = str.toCharArray();
for(int startIndex = 0 , endIndex=arr.length-1 ; startIndex<endIndex; startIndex++,endIndex--){
char temp = arr[startIndex];
arr[startIndex] = arr[endIndex];
arr[endIndex] = temp;
}
//使用字符数组构建一个字符串。
return new String(arr);
}
//需求2: 获取上传文件名 "D:\\20120512\\day12\\Demo1.java"。
public static void getFileName(String path){
int index = path.lastIndexOf("\\");
String fileName = path.substring(index+1);
System.out.println("文件名:"+ fileName);
}
// 需求1:自己实现trim的方法。
public static String myTrim(String str){
//先转换成字符 数组
char[] arr = str.toCharArray();
//定义两个 变量记录开始与结束 的索引值
int startIndex = 0 ;
int endIndex = arr.length -1;
//确定开始 的索引值
while(true){
if(arr[startIndex]==' '){
startIndex++;
}else{
break;
}
}
//确定结束 的索引值:
while(true){
if(arr[endIndex]==' '){
endIndex--;
}else{
break;
}
}
//截取子串返回
return str.substring(startIndex,endIndex+1);
}
}