一、字符數組與字符串轉換
字符數組與字符串之間的轉換是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-hant/n/160944.html