一、字元數組與字元串轉換
字元數組與字元串之間的轉換是Java編程中常見的操作。字元串類提供了toCharArray()方法,將字元串轉換為字元數組。
String str = "Hello World"; char[] charArray = str.toCharArray(); System.out.println(Arrays.toString(charArray));
以上代碼輸出結果為:[H, e, l, l, o, , W, o, r, l, d]
而將字元數組轉換為字元串,則使用String類的構造函數或valueOf()方法。
char[] charArray = {'h', 'e', 'l', 'l', 'o'};
String str1 = new String(charArray);
String str2 = String.valueOf(charArray);
System.out.println(str1);
System.out.println(str2);
以上代碼輸出結果均為:hello
二、字元數組的操作
1、字元數組的拼接
字元數組的拼接可以使用Arrays類的copyOf()方法或System類的arraycopy()方法。
char[] charArray1 = {'h', 'e', 'l', 'l', 'o'};
char[] charArray2 = {' ', 'w', 'o', 'r', 'l', 'd'};
char[] charArray3 = Arrays.copyOf(charArray1, charArray1.length + charArray2.length);
System.arraycopy(charArray2, 0, charArray3, charArray1.length, charArray2.length);
System.out.println(new String(charArray3));
以上代碼輸出結果為:hello world
2、字元數組的截取
要截取字元數組的一部分可以使用Arrays類的copyOfRange()方法。
char[] charArray = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
char[] subCharArray = Arrays.copyOfRange(charArray, 6, 11);
System.out.println(new String(subCharArray));
以上代碼輸出結果為:world
3、字元數組的比較
字元數組的比較可以使用Arrays類的equals()方法或Arrays類的compare()方法。
char[] charArray1 = {'h', 'e', 'l', 'l', 'o'};
char[] charArray2 = {'h', 'e', 'l', 'l', 'o'};
char[] charArray3 = {'w', 'o', 'r', 'l', 'd'};
System.out.println(Arrays.equals(charArray1, charArray2));
System.out.println(Arrays.compare(charArray1, charArray3));
以上代碼輸出結果分別為:true和-15(說明charArray1在字典序比charArray3小)
三、字元數組排序
可以使用Arrays工具類的sort()方法對字元數組排序。
char[] charArray = {'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'};
Arrays.sort(charArray);
System.out.println(new String(charArray));
以上代碼輸出結果為:dehllloorw
四、字元數組的應用
1、密碼加密
密碼字元串容易被第三方破解,可以使用字元數組進行加密。
char[] passwordArray = {'h', 'e', 'l', 'l', 'o'};
for(int i = 0; i < passwordArray.length; i++){
passwordArray[i] = (char)(passwordArray[i] + 1);
}
System.out.println(new String(passwordArray));
以上代碼輸出結果為:ifmmp
2、圖像轉字元畫
將圖像轉換為字元畫可以使用字元數組進行存儲。
BufferedImage image = ImageIO.read(new File("test.jpg"));
int width = image.getWidth();
int height = image.getHeight();
char[][] charArray = new char[height][width];
for(int i = 0; i < height; i++){
for(int j = 0; j < width; j++){
int pixel = image.getRGB(j, i);
charArray[i][j] = getCharFromPixel(pixel);
}
}
System.out.println(Arrays.deepToString(charArray));
以上代碼實現了將test.jpg轉化為字元畫的效果,輸出的結果是一個字元數組。
3、字元串匹配
字元串匹配中,可以使用KMP演算法或Boyer-Moore演算法,對於字元串的前綴、後綴等操作需要藉助字元數組來實現。
public static int kmp(String str, String pattern) {
char[] s = str.toCharArray();
char[] p = pattern.toCharArray();
int[] next = getNext(p);
int i = 0, j = 0;
while (i < s.length && j < p.length) {
if (j == -1 || s[i] == p[j]) {
i++;
j++;
} else {
j = next[j];
}
}
if (j == p.length) {
return i - j;
} else {
return -1;
}
}
以上代碼是KMP演算法的實現,其中對於字元串轉字元數組的操作是非常關鍵的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/160944.html
微信掃一掃
支付寶掃一掃