StringUtils.toCodePoint(str)方法分析

本文深入探讨了StringUtils.toCodePoints方法的功能,通过实例演示如何将字符串转换为Unicode码点,并解释了十进制到十六进制的转换过程,以及如何使用这些码点重新构建原始字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

StringUtils.toCodePoint(str)方法分析


根据我自己的实际操作分析该方法是将str中各个字符的十进制unicode码 并放在int[]数组中.下面是实际代码操作:

    public static void main(String[] args) {
        int[] asds = StringUtils.toCodePoints("a汉字");
        for (int asd : asds) {
            System.err.println("10进制字符" + asd);
            String x = Integer.toHexString(asd);
            System.err.println("16进制字符" + x);
            if (x.length() <= 2) {
                x = "\\u00" + x;
            } else {
                x = "\\u" + x;
            }
            System.err.println("unicode码" + x);
            System.err.println("===");
        }
        System.err.println("unicode转汉字:" + new String(asds, 0, 3));
    }

输出结果:
10进制字符97
16进制字符61
unicode码\u0061
===
10进制字符27721
16进制字符6c49
unicode码\u6c49
===
10进制字符23383
16进制字符5b57
unicode码\u5b57
===
unicode转汉字:a汉字

  • 说明:该方法直接返回的int型数组包含了三个字符的十进制字符,toHexString(int i)将十进制整型转为十六进制整型6c49,将十六进制加上\u再用 String的构造方法(int[],offset,count),该方法传入一个十进制unicode编码,offset表示数组的起始位置,count表示从offset起始位置到结束位置的长度;
  • 输出的unicode码经过自己的实验:
    在这里插入图片描述

感觉说的不是很对,只是凭借代码没有出错而作出的判断,欢迎批评指正!

### `StringUtils.isNotBlank` 与 `StringUtils.isNotEmpty` 的区别 `StringUtils.isNotBlank` 和 `StringUtils.isNotEmpty` 是 Apache Commons Lang 中 `StringUtils` 类提供的两个用于判断字符串是否为空的常用方法,但它们在判断逻辑和严格程度上存在显著差异。 `StringUtils.isNotEmpty(String str)` 只检查字符串是否为 `null` 或长度是否为 0。只要字符串不为 `null` 且长度大于 0,即使它仅由空白字符组成,也会返回 `true`。其逻辑等价于: ```java str != null && str.length() > 0 ``` 而 `StringUtils.isNotBlank(String str)` 则更加严格,除了检查字符串是否为 `null` 或长度为 0 外,还会进一步检查字符串是否包含非空白字符。如果字符串中全是空白字符(如空格、制表符、换行符等),则返回 `false`。其逻辑等价于: ```java str != null && str.length() > 0 && str.trim().length() > 0 ``` 举例说明: ```java StringUtils.isNotEmpty(""); // false StringUtils.isNotEmpty(" "); // true StringUtils.isNotEmpty(null); // false StringUtils.isNotBlank(""); // false StringUtils.isNotBlank(" "); // false StringUtils.isNotBlank(null); // false ``` 因此,在需要确保字符串中至少包含一个非空白字符的业务场景中,应优先使用 `StringUtils.isNotBlank`;而在仅需判断字符串是否为空或 `null` 的情况下,可以使用 `StringUtils.isNotEmpty` [^3]。 ### 使用场景对比 - **`StringUtils.isNotEmpty`** 更适用于只需要判断字符串是否分配了内存空间或长度不为 0 的情况,例如判断用户是否输入了内容(即使输入的是空格)。 - **`StringUtils.isNotBlank`** 更适用于需要确保字符串中存在实际内容(非空白字符)的场景,例如表单验证中防止用户仅输入空格提交。 ### 示例代码 ```java import org.apache.commons.lang3.StringUtils; public class Main { public static void main(String[] args) { System.out.println(StringUtils.isNotEmpty("")); // false System.out.println(StringUtils.isNotEmpty(" ")); // true System.out.println(StringUtils.isNotEmpty("hello")); // true System.out.println(StringUtils.isNotBlank("")); // false System.out.println(StringUtils.isNotBlank(" ")); // false System.out.println(StringUtils.isNotBlank("hello")); // true } } ``` ### 注意事项 在使用这些方法之前,必须确保项目中已正确引入 Apache Commons Lang 库。若未引入,可通过 Maven 或 Gradle 添加依赖。[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b0b0大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值