-------
android培训、
java培训、期待与您交流! ----------
例子2:
String类常用API:
1.获取
1.1 字符串中的包含的字符数,也就是字符串的长度
int length():获取长度。
1.2 根据位子获取位子上某个字符。
char chatAt(int index):
1.3 根据字符获取该字符在子串中的位子
int indexOf(String str):返回的是str在字符串中第一次出现的位子
int indexOf(String str, int fromIndex):从fromIndex指定位置开始,获取str在字符串中出现的位置
int lastIndexOf(String str): 从字符串后面位置开始,获取str在字符串中出现的位置
2.判断
2.1 字符串中是否包含某一个字符串
boolean contains(String str):
特殊之处:indexOf(String str):可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中,
所以,也可以用于对指定判断是否包含。
if(str.indexOf("aaa") != -1)
而且该方法既可以判断,又可以获取出现位置。
2.2 判断字符串是否有内容
boolean isEmpty(): 原理就相当于判断字符串长度是否为0
2.3 判断字符串中是否以指定内容开头
boolean startsWith(str);
2.4 字符串是否以指定内容结尾
boolean endsWith(str);
2.5 判断字符串内容是否相同
boolean equals(str);
2.6 判断内容是否相同,并忽略大小写
boolean equalsIgnoreCase();
3.转换
3.1 将字符数组转换成字符串
构造函数: String(char[])
String(cha[], offset,count): 将字符数组中的一部分转成字符串
静态方法: static String copyValueOf(char[]);
static String copyValueOf(char[], int offset ,int count)
static String valueOf(char[])
3.2 将字符串转成字符数组
char[] toCharArray();
3.3 将字节数组转成字符串
String[byte[]]
String(byte[], offset, count):将自己数组中的一部分转成字符串
3.4 将字符串转换层字节数组
byte[] getBytes()
3.45 将基本数据类型转化成字符串
static String valueOf(int)
static String valueOf(double)
特殊:字符串和字节数组在转换过程中,是可以指定编码表的
4.替换
String replace(oldchar
,newchar)
将字符串中所有的oldchar替换成newchar 如果没有找到对应的oldchar,返回原来的字符串
5. 切割(非常实用)
String[] split(str);
6.子串
String substring(begin);
String substring(begin,end); *子串中不包含end下标中的字串
7. 转换、比较、去空格
7.1 将字符串转换成大小写
String toUpperCase() 转换成大写
String toLowerCase() 转换成小写
7.2去掉字符串两端的空格
String trim();
7.3对两个字符串进行自然顺序的比较
int compareTo(String)
返回值等于零:两个字符串相等
小于零: 传入参数大于字符串
大于零:传入参数小宇字符串
例子1:
例子1:
//字符串是一个特殊的对象
public class StringDemo {
public static void main(String[] args) {
String s1 = "abc"; // s1是一个类型变量,“abc”是一个对象,一旦被初始化就不可被改变
String s2 = new String("abc");
String s3 = "abc";
// s1和s2的区别
// 第一句在内存中只有一个对象
// 第二句s2在内存中有两个对象
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s1 == s3);
// 结果:false
// true
}
}
例子2:
public class StringDemo2 {
public static void test7() {
String s = " Hello word! ";
print(s.toUpperCase()); // 转成大写
print(s.toLowerCase()); // 转换小写
print(s.trim()); // 去掉首尾空格
String s1 = "abc";
String s2 = "abb";
print(s1.compareTo(s2)); // 比较两个字符串
}
public static void sub() {
String a = "abcdef";
print(a.substring(2)); // 从指定位置开始到结尾,如果下标不存在,会出现字符串下标越界异常
print(a.substring(2, 4)); // 包含头,不包含尾,
}
public static void split() {
String str = "tomcat,apache,java";
String[] arr = str.split(",");
for (String a : arr)
print(a);
}
public static void replace_1() {
String str = "hello java";
String s1 = str.replace("java", "wrod");
print(s1);
}
public static void change() {
char arr[] = { 'a', 'b', 'c', 'd', 'e' };
String str = new String(arr);
print(str);
char arr2[] = str.toCharArray();
for (int i = 0; i <= arr2.length; i++)
print(arr2[i]);
print(str);
}
/*
* 文件名的判断
*/
public static void is() {
String str = "StringDemo.java";
// 判断文件名是否以String开头
print(str.startsWith("String"));
// 判断文件是不是.java格式
print(str.endsWith(".java"));
// 判断文件中时候含有Demo字符串内容
print(str.contains("Demo"));
}
/*
* String的获取方法
*/
public static void get() {
String str = "abcdekakf";
// 获取字符串指定下标的字符
print(str.charAt(5)); // 当下标超出字符串的长度时,或抛出StringIndexOutOfBoundsException异常
print(str.length()); // 字符串长度
print(str.indexOf("dek")); // 获取指定字符所在位子的下标 当字符串中没有指定的字符时,输出-1
print(str.indexOf("a", 3)); // 从指定位子3开始进行查找指定字符下标 当字符串中没有指定的字符时,输出-1
print(str.lastIndexOf("a")); // 从字符串的后面进行开始查找指定字符的位子
}
public static void main(String[] args) {
test7();
// split();
// change();
// replace_1();
// is();
// get();
}
// 打印输出方法 使用的哟
public static void print(Object obj) {
System.out.println(obj);
}
}
例子3:
/*
/*
* 模拟String中 的strim方法,去掉字符串两边的空格
*/
public class MyStrimDemo {
public static void main(String[] args) {
String str = " hello word ";
System.out.println(mytrim(str));
}
public static String mytrim(String str) {
int start = 0, end = str.length() - 1;
// 分析: 我们先拿字符串前面部分为空格的最后一个空格下标
while (start <= end && str.charAt(start) == ' ')
start++;
// 分析: 我们先拿字符串后面部分为空格的最后一个空格下标
while (start <= end && str.charAt(end) == ' ')
end--;
return str.substring(start, end + 1);
}
}
例子4:
/*
练习:
1. 翻转字符串
2. 计算指定字符串出现次数
3. 获取两个字符串中最大相同子串,
*/
public class DIYString {
public static void main(String[] args) {
// String str = "0123456789";
// print(overturn(str));
// print(overturn(str, 0, 5));
// String str = "abeeeeeeeabkkkkkkkkab";
// print(getSubCount(str, "ab"));
String s1 = "gegeasgHellogege";
String s2 = "aaaaHelloooo";
print(getMaxSub(s2, s1));
}
// 3. 获取两个字符串中最大相同子串
public static String getMaxSub(String s1, String s2) {
String max = "";
String min = "";
max = s1.length() > s2.length() ? s1 : s2;
min = max == s1 ? s2 : s1;
for (int i = 0; i < min.length(); i++) {
for (int j = 0, x = min.length() - i; x != min.length() + 1; j++, x++) {
String temp = min.substring(j, x);
if (max.contains(temp))
return temp;
}
}
return null;
}
// 2.计算指定字符串出现次数 这种方式消耗资源小
public static int getSubCount(String str, String key) {
int index = 0;
int count = 0;
while ((index = str.indexOf(key)) != -1) {
str = str.substring(index + key.length());
count++;
}
return count;
}
// 选择翻转
public static String overturn(String str, int start, int end) {
char[] cha = str.toCharArray();
return new String(reversalArr(cha, start, end));
}
// 全部字符串反转
public static String overturn(String str) {
char[] cha = str.toCharArray();
return String.valueOf(reversalArr(cha, 0, cha.length - 1));
}
// 翻转数组
public static char[] reversalArr(char[] arr, int start, int end) {
for (int i = start, j = end; i <= j; i++, j--) {
char temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
// 打印
public static void print(Object obj) {
System.out.println(obj);
}
}
StringBuffer类常用API:
StringBuffer: 是一个容器,是字符串缓冲区,而且长度是可以改变的,可以操作多种数据类型
StringBuffer 是线程同步的(安全)
StringBuilder是线程不同步的,但效率高(开发建议使用)
JDK1.5版本之后出现StringBuilder
升级三个因素:
提高效率
简化书写
提高安全性
1. 存储
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
StringBuffer insert(index,数据):可以将数据插入到指定index位置
2. 删除
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end.
StringBuffer deleteCharAt(index):删除指定位置的字符。
3. 获取
int indexOf(String str)
int lastIndexOf(String str)
int length()
String sustring(int start ,int end)
4. 修改
StringBuffet replace(int start,int end,String str) 替换,不包含end
void setCharAt(int index, char ch) 只替换指定位子的一个字符
5.翻转
StringBuffer reverse();
StringBuffer例子1:
StringBuffer例子1:
public class StringBufferDemo {
/**
* @param args
*/
public static void main(String[] args) {
// add();
// delete();
// update();
reverse();
}
// 翻转测试
public static void reverse() {
StringBuffer buf = new StringBuffer("123456789");
buf.reverse();
print(buf.toString());
}
public static void update() {
StringBuffer buf = new StringBuffer("123456789");
buf.replace(1, 3, "**"); // 替换不包含end位置
print(buf.toString());
buf.setCharAt(8, '0');
print(buf.toString());
}
public static void delete() {
StringBuffer buf = new StringBuffer("123456789");
buf.delete(1, 3); // 当下标超出时,会抛出下标越界异常
print(buf.toString());
buf.deleteCharAt(0); // 删除第一个字符
print(buf.toString());
}
public static void add() {
StringBuffer buffer = new StringBuffer();
buffer.append("gege").append(false).append(123);
print(buffer.toString());
buffer.insert(1, "**");
print(buffer.toString());
}
// 打印
public static void print(Object obj) {
System.out.println(obj);
}
}