系统类 String
注意:字符串是个常量,又叫常量字符串,是不可改变的
所以你一旦创建了,那它的值就无法改变了
只要是对字符串进行操作,都返回的是一个新的字符串(原字符串不能更改)
字符串存在于常量池中
字符串本身没有发生变化,而是引用地址发生变化
相当于指针重新指向
String string = "Y";
string = "X";
System.out.println(string);
String string1 = "abc";
String string2 = new String("abc");
String string3 = "abc";
System.out.println(string1 == string2);
System.out.println(string1 == string3);
System.out.println(string1.equals(string2));
string1和 string2有什么不同?分别代表几个对象
string1是一个对象
string2是两个对象:"abc" 和 new
String string1 = "abc";
String string2 = new String("abc");
String 的方法
1.获取
根据索引获取字符串中字符
char charAt(int index);
根据字符获取在字符串中的位置
int indexOf(int ch);
int indexOf(int ch, int fromIndex);
public static void fun1() {
String string = "shuaisu";
char charAt = string.charAt(1);
System.out.println(charAt);
int indexOf = string.indexOf('a');
System.out.println(indexOf);
int indexOf2 = string.indexOf('s', 2);
System.out.println(indexOf2);
int indexOf3 = string.indexOf("su");
System.out.println(indexOf3);
}
2.判断
是否包含这个字符串
是否以这个前缀开头
是否以这个后缀结尾
public static void fun2() {
String string1 = "shuaisu";
String string2 = "ai";
boolean b1 = string1.contains(string2);
System.out.println(b1);
String string3 = string1 + string2;
System.out.println(string3);
String newString = string1.concat(string2);
System.out.println(newString);
}
public static void fun3() {
String string = "www.baidu.com";
boolean b1 = string.contains("baidu");
System.out.println(b1);
boolean b2 = string.startsWith("www");
System.out.println(b2);
boolean b3 = string.endsWith("com");
System.out.println(b3);
}
3.替换
public static void fun1() {
String string = "南宫";
String string2 = string.replace("南宫", "端木");
System.out.println(string2);
}
4.切割
public static void fun2() {
String string = "nan,gong,wen,tian,z,l,h";
String[] strings = string.split(",");
for (int i = 0; i < strings.length; i++) {
System.out.println(strings[i]);
}
for (String string2 : strings) {
System.out.println(string2);
}
}
5.获取子字符串
public static void fun3() {
String string = "nangong";
String string2 = string.substring(4);
System.out.println(string2);
String string3 = string.substring(0, 4);
System.out.println(string3);
}
6.转换大小写
public static void fun4() {
String string = "nangong";
String string2 = string.toUpperCase();
System.out.println(string2);
String string3 = string2.toLowerCase();
System.out.println(string3);
}
7.去空格
public static void fun5() {
String string = " na ng on g ";
String string2 = string.trim();
System.out.println(string2);
}
8.字符串比较
字符串相等时返回 0
两个字符串长度相同时:
一位一位进行 ASCII 码的比较
长度不相等返回的是长度的差值
public static void fun6() {
String string1 = "nangong";
String string2 = "nangong";
int num = string1.compareTo(string2);
System.out.println(num);
}
9.判断两个字符串相等(忽略大小写)
public static void fun7() {
String string1 = "wanglong";
String string2 = "wanGLong";
boolean b = string1.equalsIgnoreCase(string2);
System.out.println(b);
}
10.把字符数组转化为字符串
public static void fun8() {
char[] array = {'w','a','n','g'};
String string = new String(array);
System.out.println(string);
int num = 5;
String string2 = String.valueOf(num);
System.out.println(string2);
String string3 = "wanglong";
char[] cs = string3.toCharArray();
for (char c : cs) {
System.out.println(c);
}
}
11.判断字符串是否为空
public static void fun9() {
String string1 = "wanglong";
boolean b = string1.isEmpty();
System.out.println(b);
}
例1:将字符串 " abc def " 反转
private static void fun1() {
String string = " abc def ";
char[] charArray = string.toCharArray();
for (int i = 0; i < charArray.length / 2; i++) {
char temp = charArray[i];
charArray[i] = charArray[charArray.length - 1 - i];
charArray[charArray.length - 1 - i] = temp;
}
string = new String(charArray);
System.out.println(string);
}
例2:
将字符串 " abc def "中的前后空格去掉
转化成 "abc def" 用代码实现(不使用系统方法)
1.声明字符串
2.将字符串转成字符数组
3.声明开始和结束角标
4.找第一个不是空格的索引
5.找最后一个不是空格的索引
6.根据开始和结束的索引,截取字符串,注意留头问题
public static void fun2() {
String string = " abc def ";
char[] charArray = string.toCharArray();
int start = 0;
int end = string.length() - 1;
while (string.charAt(start) == ' ' && start < end) {
start++;
}
while (charArray[end] == ' ' && start < end) {
end--;
}
String substring = string.substring(start, end + 1);
System.out.println(substring);
}
例3:
计算字符串中 "wwwdasdwwwaswwwghwwwkl" www出现的次数
public static void fun3() {
String string = "wwwdasdwwwaswwwghwwwkl";
int count = 0;
int index = 0;
String key = "www";
while(string.contains(key)) {
index = string.indexOf(key);
string = string.substring(index + key.length());
count++;
}
System.out.println(count);
}
例4:
查找下面出现相同的最大子串
public static String fun4() {
String string = "wheahelloweakweedas";
String string2 = "asdhelloaasdsqas";
String substring = "";
for (int i = 0; i < string2.length(); i++) {
for (int start = 0,end = string2.length() - i; end < string2.length(); start++,end++ ) {
substring = string2.substring(start, end + 1);
if (string.contains(substring) && start < end) {
return substring;
}
}
}
return substring;
}
http://blog.csdn.net/huzongnan/article/list