字符的码值S

字符的码值S,第1张

字符的码值S

字符串

1、性质 1.1、子串
public class StringApi {
    public static void main(String[] args) {
        String str1 = "1234wangnaixing56789";
        //提出字母
        System.out.println(str1.substring(4,15));//wangnaixing
    }
}

1.2、拼接
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、复读机
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.

public class StringApi {
    public static void main(String[] args) {
        String x1 = "abc";
        x1 = x1.substring(1,3)+"d";
        System.out.println(x1);
    }
}

1.5、检测字符串是否相等?
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的字符串

public class StringApi {
    public static void main(String[] args) {
        String x1 = "";//这是一个空串
        System.out.println(x1.length()); //0
    }
}

public class StringApi {
    public static void main(String[] args) {
        String x1 = "";//这是一个空串
        
        if (x1!=null && x1.length()>0){
            //判定字符串既不是null可不是空串的逻辑
        }
    }
}

2、行为 2.1、根据索引得到字符
public class StringApi {
    public static void main(String[] args) {
        String x1 = "abcdefgh1jilif";
        char c = x1.charAt(3);
        System.out.println(c);//d
    }
}

2.2、根据索引得到码点
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、码点

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5684152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存