1.字符串 与基本数据类型、包装类之间转换
①字符串 --->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);
②基本数据类型、包装类--->字符串:调用字符串的重载的valueOf()方法
2.字符串与字节数组间的转换
①字符串---->字节数组:调用字符串的getBytes()
②字节数组---->字符串:调用字符串的构造器
3.字符串与字符数组间的转换
①字符串---->字符数组:调用字符串的toCharArray();
①字符串 --->基本数据类型、包装类:调用相应的包装类的parseXxx(String str);
②基本数据类型、包装类--->字符串:调用字符串的重载的valueOf()方法
2.字符串与字节数组间的转换
①字符串---->字节数组:调用字符串的getBytes()
②字节数组---->字符串:调用字符串的构造器
3.字符串与字符数组间的转换
①字符串---->字符数组:调用字符串的toCharArray();
②字符数组---->字符串:调用字符串的构造器
练习题:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class StringDemo {
@Test
public void testTrime() {
String str = " abcdefg ";
String str1 = myTrime(str);
System.out.println(str1);
}
//1.模拟一个trim方法,去除字符串两端的空格。
public static String myTrime(String str) {
int start = 0;
int end = str.length() - 1;
while(str.charAt(start) == ' ') {
start++;
}
while(str.charAt(end) == ' ') {
end--;
}
return str.substring(start, end + 1);
}
@Test
public void testReverse() {
String str = "abcdefg";
System.out.println(reverseString(str, 3, 5));
System.out.println(reverseString2(str, 5, 5));
}
//2.将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefg”反转为”abfedcg”(方法一)
public static String reverseString(String str, int start, int end) {
char[] c = str.toCharArray();
return reverseArray(c, start, end);
}
public static String reverseArray(char[] c, int start, int end) {
for (int i = start , j = end; i < j; i++ , j--) {
c[i] = (char) (c[i] ^ c[j]);
c[j] = (char) (c[i] ^ c[j]);
c[i] = (char) (c[i] ^ c[j]);
}
return new String(c);
}
//方法二:
public static String reverseString2(String str, int start, int end) {
String str1 = str.substring(0, start);
for (int i = end; i >= start; i--) {
str1 += str.charAt(i);
}
str1 += str.substring(end + 1);
return str1;
}
@Test
public void testTime() {
String str1 = "abcdabcab";
String str2 = "ab";
int time = getTime(str1, str2);
System.out.println(time);
}
//3.获取一个字符串在另一个字符串中出现的次数。判断str2在str1中出现的次数
public static int getTime(String str1, String str2) {
int count = 0;
int len;
while((len = str1.indexOf(str2)) != -1) {
count++;
str1 = str1.substring(len + 1);
}
return count;
}
@Test
public void testGetMaxSubString() {
List<String> strs = getMaxSubString("abslkdjglabceujnh", "abcehhujnh");
System.out.println(strs);
}
//4.获取两个字符串中最大相同子串。
public static List<String> getMaxSubString(String str1, String str2) {
String maxStr = str1.length() > str2.length()? str1:str2;
String minStr = str1.length() < str2.length()? str1:str2;
int len = minStr.length();
List<String> list = new ArrayList<String>();
for (int i = 0; i < len; i++) {//最小串每次要减少的字符个数
for (int j = 0, k = len - i; k <= len; j++, k++) {
String str = minStr.substring(j, k);
if(maxStr.contains(str)) {
list.add(str);
}
}
if(list.size() != 0) {
return list;
}
}
return null;
}
@Test
public void testSort() {
String str = "uerngalsowkdjgx";
System.out.println(sort(str));
}
//5.对字符串中字符进行自然顺序排序。
public static String sort(String str) {
char[] c = str.toCharArray();
Arrays.sort(c);
return new String(c);
}
@Test
public void testPartReverse() {
System.out.println(partReverse("I am a student!"));
}
//练习:I am a student! 写一个方法:实现输出 !student a am I
public static String partReverse(String str) {
List<String> list = getWords(str);
//Collections.reverse(list);//不用多一次list的反转操作更效率
String revstr = "";
for (String string : list) {
//revstr += string;//若上面使用了list的反转,则使用这句
revstr = string + revstr;
}
return revstr;
}
public static List<String> getWords(String str) {
List<String> list = new ArrayList<String>();
char[] c = str.toCharArray();
String temp = "";
for (int i = 0; i < c.length; i++) {
if(Character.isLetter(c[i])) {
temp += c[i];
} else {
if(!"".equals(temp)) {
list.add(temp);
}
temp = "";
list.add(String.valueOf(c[i]));
}
}
return list;
}
}