Java String与其他类型之间的转化及其算法练习

来源:互联网 发布:网站名与域名的区别 编辑:程序博客网 时间:2024/05/20 05:28
1.字符串 与基本数据类型、包装类之间转换
 ①字符串 --->基本数据类型、包装类:调用相应的包装类的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 {@Testpublic 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);}@Testpublic 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;}@Testpublic 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;}@Testpublic 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;}@Testpublic 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);}@Testpublic void testPartReverse() {System.out.println(partReverse("I am a student!"));}//练习:I am a student!   写一个方法:实现输出 !student a am Ipublic 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;}}


0 0
原创粉丝点击