特辣的海藻!2

基础知识点
整型数字-->字符数字

方法一:使用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()

java 复制代码
char ch = String.valueOf(num).charAt(0);

将整型数字转为字符串取第一个字符

字符数字-->整型数字

方法一:Character.getNumericValue(char ch) 可以将字符数字转换为对应的整型数字

方法二:通过字符运算 ch-'0'
字符数字的Unicode值与字符'0'的Unicode值之差就是对应的整型数字

方法三:使用Integer.parseInt(String s)
将字符数字转换为字符串,然后使用Integer.parseInt(String s)

java 复制代码
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()

将输入的字符串转换为字符数组,然后获取第一个字符

java 复制代码
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)

java 复制代码
String str = "Hello World!";
String restr = new StringBuilder(str).reverse().toString();

方法二:转换为字符数组并手动反转

java 复制代码
// 左右交换
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:目标数组的起始位置,从该索引开始存放复制的字符

java 复制代码
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)

起始位置 个数

java 复制代码
char[] chs = {'H', 'e', 'l', 'l', 'o'};
String str = new String(chs);

方法二:使用String.valueOf()

java 复制代码
char[] chs = {'H', 'e', 'l', 'l', 'o'};
String str = String.valueOf(chs);

方法三:使用String Builder或 String Buffer

java 复制代码
char[] chs = {'H', 'e', 'l', 'l', 'o'};
StringBuilder sb = new StringBuilder();
sb.append(chs);
String str = sb.toString();
trim()

功能:去除字符串首尾的空白字符(包括空格、制表符、换行符、回车符等)

java 复制代码
String str = " Hello World \t\n";
String trimmed str.trim();  // 返回 "Hello World"

Tips:

● 不修改原字符串,而是返回一个新字符串

● 不会去除字符串中间的空白

3.压缩字符串 - 蓝桥云课

java 复制代码
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);
        else
            System.out.println("NO");
        scan.close();
    }
}

小小小提普斯:

  1. next()不读入空格符,nextLine()才读入空格符
  2. 任何奇数都可以表示成两个连续整数的和
  3. 对于偶数,只有那些不是2的幂次的才能表示成连续整数的和
  4. 若一个数num是2的幂次,则num不断除以2后,最后的结果为1
相关推荐
我命由我12345几秒前
Spring Boot 自定义日志打印(日志级别、logback-spring.xml 文件、自定义日志打印解读)
java·开发语言·jvm·spring boot·spring·java-ee·logback
lilye661 分钟前
程序化广告行业(55/89):DMP与DSP对接及数据统计原理剖析
java·服务器·前端
战族狼魂4 小时前
CSGO 皮肤交易平台后端 (Spring Boot) 代码结构与示例
java·spring boot·后端
xyliiiiiL5 小时前
ZGC初步了解
java·jvm·算法
杉之5 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
hycccccch5 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
天天向上杰6 小时前
面基JavaEE银行金融业务逻辑层处理金融数据类型BigDecimal
java·bigdecimal
请来次降维打击!!!7 小时前
优选算法系列(5.位运算)
java·前端·c++·算法
用键盘当武器的秋刀鱼7 小时前
springBoot统一响应类型3.5.1版本
java·spring boot·后端
嘤国大力士7 小时前
C++11&QT复习 (七)
java·c++·qt