字符的码值S

字符串

1、性质

1.1、子串

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String str1 = "1234wangnaixing56789";
        //提出字母
        System.out.println(str1.substring(4,15));//wangnaixing
    }
}

1.2、拼接

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String x1 = "123";
        String x2 = "456";
        int x3 = 789; //整型在做加法的时候,转String,再拼接
        String msg = x1+x2+x3;
        System.out.println(msg);//123456789
    }
}

1.3、复读机

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String name = "wangnaixing";
        String repeat = name.repeat(3);
        System.out.println(repeat);//wangnaixingwangnaixingwangnaixing
    }
}

1.4、不可变的字符串

字符串如abc不能直接修改,abc称为字符常量。如果要修改只能修改引用指向,比如指向bcd.

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String x1 = "abc";
        x1 = x1.substring(1,3)+"d";
        System.out.println(x1);
    }
}

1.5、检测字符串是否相等?

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String x1 = "abc";
        String x2 = "abc";
        System.out.println(x1.equals(x2));//true
    }
}

1.6、空串和判空

空串就是长度为0的字符串

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String x1 = "";//这是一个空串
        System.out.println(x1.length()); //0
    }
}

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String x1 = "";//这是一个空串
        
        if (x1!=null && x1.length()>0){
            //判定字符串既不是null可不是空串的逻辑
        }
    }
}

2、行为

2.1、根据索引得到字符

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String x1 = "abcdefgh1jilif";
        char c = x1.charAt(3);
        System.out.println(c);//d
    }
}

2.2、根据索引得到码点

/**
 * @author by wangnaixing
 * @Description
 * @Date 2021/12/27 10:14
 */
public class StringApi {
    public static void main(String[] args) {
        String x1 = "abcdefgh1jilif";
        int i = x1.codePointAt(3);
        System.out.println(i);// d字符在编码表的代码值为100
    }
}

3、问题

这些很多StringAPI,挺多很简单的,一看就懂。可以通过网站https://docs.oracle.com/javase/9/docs/api/java/lang/String.html 查询使用,可是对于一些概念,码点,Unicode编码机制不是很清晰。导致看不懂API

3.1、你了解char吗?

我们知道字符类型 char 在 Java 中是和 Unicode编码 形成一一对应的映射来存储的,而采取的编码方式则为 UTF-16

字符串,就是一个个字符串起来,包起来的对象。而字符,计算机并不认识字符,只知道01二进制。字符和二级制需要一个映射关系。所以一开始有了美国的ASCII,但对于别的不是英文母语的国家,就需要更多字符,比如中国这么多的汉字,ASCII就不够用。

于是有了Unicode的编码方案,这是一本大的字典,大到把全世界的字符和二进制数都搭建了关系。

3.2、UTF-8 UTF-16

这里的 UTF 是 Unicode transformation format 的缩写,即统一码转换格式。

解决方法:不定长存储,比如,汉这个字占有2个字节,字母A一个字节,采用Unicode编码为了兼容。只能每个字符都要2个字节.UTF就是做这样的转化工作的。

3.3、码点

码点就是编码表中某个字符对应的代码值,这个代码值就标识这个字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值