基础知识点
整型数字-->字符数字
方法一:使用Character.forDigit()方法
Character.forDigit(int num, int radix)
该方法可以将整型数字转换为对应的字符形式。radix表示进制
Tips:
● 需要转换的整型数字必须在 0 到 radix-1 的范围内,否则会返回空字符(\0)
● 例如,Character.forDigit((15, 10) 会返回空字符,因为15不是有效的十进制数字。、
方法二:通过字符运算
num + '0'
将整型数字加上字符'0'的ASCII值,可以将其转换为对应的字符数字
原理:
● 字符 '0' 的ASCII值是48
● 数字 0 到 9 的ASCII值依次是 48 到 57
● 因此,num + '0' 可以将整型数字转换为对应的字符数字
方法三:使用String.valueOf() 或 Integer.toString()
char ch = String.valueOf(num).charAt(0);
将整型数字转为字符串取第一个字符
字符数字-->整型数字
方法一:Character.getNumericValue(char ch) 可以将字符数字转换为对应的整型数字
方法二:通过字符运算 ch-'0'
字符数字的Unicode值与字符'0'的Unicode值之差就是对应的整型数字
方法三:使用Integer.parseInt(String s)
将字符数字转换为字符串,然后使用Integer.parseInt(String s)
int num = Integer.parseInt(String.valueOf(ch));
判断
Character.isDigit(char ch)
判断指定的字符是否一个数字(0-9)
● 返回值:如果字符是数字,返回true;否则返回false
● 支持的范围:包括ASCII数字(0-9),还包括Unicode中其他语言中的数字字符(如全角数字0-9)
Character.isLetter(char ch)
判断字符是否是字母
Character.isWhitesapce(char ch)
判断字符是否是空白字符 (空格、制表符、换行符等)。
单个字符转换大小写
Character.isLowerCase(char ch) Character.isUpperCase(char ch)
判断字符是否是小写字母或大写字母
Character.toUpperCase(char ch)
将字符转换为大写,如果字符没有对应的大写形式,则返回原字符
Character.toLowerCase(char ch)
将字符转换为小写,如果字符没有对应的小写形式,则返回原字符。
字符串转换大小写
String.toUpperCase()
将字符串中的所有字符转换为大写,返回一个新的字符串
String.toLowerCase()
将字符串中的所有字符转换为小写,返回一个新的字符串
Tips:String类的大小写转换方法返回一个新的字符串,原字符串不会被修改
读取单个字符
方法一:使用 scan.next().charAt(0)
scan.next()返回一个字符串,charAt(0)可以获取字符串的第一个字符
方法二:使用 scan.next().toCharArray()
将输入的字符串转换为字符数组,然后获取第一个字符
char[] chars = scan.next().toCharArray();
char c1 = chars[0];
方法三:使用 scan.findInLine(".")
可以匹配输入中的第一个字符
sort()函数
Arrays.sort()
在Java中,使用Arrays.sort()对字符数组进行排序是是按照字符的Unicode编码值进行升序排列, 区分大小写。
数字字符‘0’到‘9’的Unicode值是从48到57,大写字符‘A’到‘Z'是65到90,小写字母‘a’到‘z’是97到122。所以如果有一个包含数字、大写和小写字母的字符数组,排序后会是数字先出现,接着是大写字母,最后是小写字母。(数大小)
字符串反转
方法一:适用StringBuilder或StringBuffer(reverse)
String str = "Hello World!";
String restr = new StringBuilder(str).reverse().toString();
方法二:转换为字符数组并手动反转
// 左右交换
String str = "te la de hai zao!";
char[] chs = str.toCharArray();int left = 0, right = chs.length-1;
while(left < right) { char t = chs[left];chs[left] = chs[right];ch[right] = t;
}
String restr1 = new String(chs);// 从后往前遍历
String restr2 = "";
for(int i = chs.length-1; i >= 0; i--) {restr2 += chs[i];
}
方法三:使用 Collection.reverse() ,将字符串转换为List<Character>后反转。
字符串 ---> 字符数组
方法一:使用 toCharArray()
方法二:用 charAt() 逐个字符读取,一个字符一个字符的把它放入字符数组
方法三:使用 getChars()
getChars(int srcBegin. int srcEnd, char[] dst, int dstBegin)
● srcBegin:源字符串中要复制的起始索引(包含该位置的字符)
● srcEnd:源字符中要复制的结束索引(不包含该位置的字符)
● dst:目标字符数组
● dstBegin:目标数组的起始位置,从该索引开始存放复制的字符
String str = "Java is fun";
char[] dst = new char[7];// 复制索引7到9的字符("fun")到dst数组的索引2处
str.getChars(7, 10, dst, 2);
System.out.println(Arrays.toString(dst)); // 输出: [\0, \0, f, u, n, \0, \0]
字符数组 ---> 字符串
方法一:使用String构造函数 (new String)
String str = new String(chs, int offset, int count)
起始位置 个数
char[] chs = {'H', 'e', 'l', 'l', 'o'};
String str = new String(chs);
方法二:使用String.valueOf()
char[] chs = {'H', 'e', 'l', 'l', 'o'};
String str = String.valueOf(chs);
方法三:使用String Builder或 String Buffer
char[] chs = {'H', 'e', 'l', 'l', 'o'};
StringBuilder sb = new StringBuilder();
sb.append(chs);
String str = sb.toString();
trim()
功能:去除字符串首尾的空白字符(包括空格、制表符、换行符、回车符等)
String str = " Hello World \t\n";
String trimmed str.trim(); // 返回 "Hello World"
Tips:
● 不修改原字符串,而是返回一个新字符串
● 不会去除字符串中间的空白
题
3.压缩字符串 - 蓝桥云课
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);String str1 = scan.next();// 局部变量一定要初始化String str2 = "";char[] chs = str1.toCharArray();// 字符个数计数器 注意不是初始化为0 因为它自己本身也算一个字符int count = 1;for(int i = 0; i < str1.length(); i++) {if(i < str1.length()-1 && chs[i] == chs[i+1])count++;else {if(count < 1)str2 += chs[i];else {str2 += chs[i];str2 += count;count = 1;}}}if(str2.length() < str1.length())System.out.println(str2);elseSystem.out.println("NO");scan.close();}
}
小小小提普斯:
- next()不读入空格符,nextLine()才读入空格符
- 任何奇数都可以表示成两个连续整数的和
- 对于偶数,只有那些不是2的幂次的才能表示成连续整数的和
- 若一个数num是2的幂次,则num不断除以2后,最后的结果为1