Java String 类
1.什么是字符串?
在java中,字符串属于对象,java创建了String类来创建和操作字符串
2.字符串的内容一旦建立,该字符串所在堆上的内容就无法被改变
the following code can’t change the contents of the string
String str =“Java”;
str = “HTML”;
3.如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
4.使用字符串的处理函数完成对字符串的各种基本操作
public class Test {
public static void main(String[] args) {
// String Compare
String s1 = new String("abc");
String s2 = new String("abc");
if (s1==s2)
System.out.println("s1==s2");
else
System.out.println("s1!=s2");
if (s1.equals(s2))
System.out.println("s1 equals to s2");
else
System.out.println("s1 not equals to s2");
String str1 = "Welcome to Java";
boolean flag1 = str1.startsWith("Welcome");
boolean flag2 = str1.endsWith("java");
System.out.println("flag1=" + flag1);
System.out.println("flag2=" + flag2);
// String Connect
String str2 = "abc";
String str3 = "abe";
String str4 = str2 + str3;
String str5 = str2.concat(str3);
System.out.println("str4=" + str4);
System.out.println("str5=" + str5);
// String Transform
String str6 = "Welcome".toLowerCase();
String str7 = "Welcome".toUpperCase();
String str8 = "Welcome".replaceAll("e","A");
System.out.println("str6=" + str6);
System.out.println("str7=" + str7);
System.out.println("str8=" + str8);
// String Find
String str9 = new String("I like Java");
int i1 = str9.indexOf("like");//第一次出现like的位置
int i2 = str9.lastIndexOf("a");
String str10 = str9.substring(2, 5);
System.out.println("i1=" + i1);
System.out.println("i2=" + i2);
System.out.println("str10=" + str10);
char c = str9.charAt(2);//找到索引处的字符
char[] chrs = str9.toCharArray();//将字符串转化为字符数组
int length = str9.length();
}
}
==比较的是变量在栈中的值是否相同。对于基础数据类型,可以比较其值是否相等。对于引用类型,栈里的值就是一个地址,因此比较的是地址是否相同,而不是堆上的具体内容是否相同。
equals比较的是两个字符串引用类型的变量指向的堆中的内容是否相同。
5.从控制台输入一个字符串,判断其是不是回文字符串(即翻转前和翻转后是否相同)
import java.util.Scanner;
public class StringBufferDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please input the string: ");
String oldStr = scanner.nextLine();
StringBuffer oldBuffer = new StringBuffer(oldStr);
StringBuffer newBuffer = oldBuffer.reverse();
String newStr = new String(newBuffer);
if (oldStr.equals(newStr))
System.out.println(oldStr + "是回文字符串");
else
System.out.println(oldStr + "不是回文字符串");
}
}
6.应用字符串处理函数提取具有特征的字串
方法一:
public class StringDemo1 {
public static void main(String[] args) {
String message = "My email is dqpilzg@163.com!You can mail to me.";
String email;
int locationA = 0;
int locationFirstFlagForA = 0;
int locationSecondFlagForA = 0;
for(int i=0; i<message.length();i++){
if (message.charAt(i) == '@') {
locationA = i;
System.out.println(locationA);
break;
}
}
for(int i=locationA; i>=0; i--){
if (message.charAt(i) == ' ') {
locationFirstFlagForA = i;
System.out.println(locationFirstFlagForA);
break;
}
}
for (int i = locationFirstFlagForA+1; i < message.length(); i++) {
if (message.charAt(i) == '!') {
locationSecondFlagForA = i;
System.out.println(locationSecondFlagForA);
break;
}
}
email = message.substring(locationFirstFlagForA+1,locationSecondFlagForA);
System.out.println(email);
}
}
方法二:
public class StringDemo2 {
public static void main(String args[]){
String message = "My email is dqpilzg@163.com!You can mail to me.";
String email;
int locationFirstFlagForA = 0;
int locationSecondFlagForA = 0;
locationSecondFlagForA = message.indexOf('!');
String message2 = message.substring(0, locationSecondFlagForA);
locationFirstFlagForA = message2.lastIndexOf(' ');
email = message2.substring(locationFirstFlagForA+1);
System.out.println(email);
}
}
6.关于截取字串,与判断是否有子串的方法
indexOf(String s),如果包含,返回的值是该子字符串在包含其的父类字符串中起始位置;如果不包含返回值为-1
java.lang.String.contains()
包含char值序列时返回true,没有返回false