• java基本数据类型Char


    问题背景

    最近在看一些代码的时候发现自己并不清楚char类型数据是如何进行比较和运算的,所以学习一下https://www.w3cschool.cn/java/java-char-data-type.html,并且写了些自己的理解

    char类型的定义

            char s1='a';
            char s2='d';
            char s3=14545;
            char s4='5';
            char s7='@';
            char s5=123;
            char s6=256;
            char s8='\u0041';
            char s9='李';
            char s10='\111';
            char s11='\11';
            char s12='\1';
            char s13='\2';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    char数据类型是16位无符号Java基元数据类型。它表示Unicode字符。请注意,char是无符号数据类型。因此,char变量不能为负值。字符数据类型的范围为0到65535,这与Unicode集的范围相同,实际上char 在Java 中是和 Unicode编码 形成一一对应的映射来存储的

    • 用单引号括起来的字符
      如s1,s2,s4,s7,s6,s9,,可以定义数字,字母,汉子,但是都只能是一个字符
    • 字符转义序列
      字符字面量可以表示为字符转义序列。字符转义序列以反斜杠开头,后面紧跟一个字符,并且都用单引号括起来。有八个预定义的字符转义序列,如下表所列。Java中只有八个字符转义序列。我们不能定义你自己的字符转义序列。
      在这里插入图片描述
      即便你自己定义了如
    
            char s11='\11';
            char s12='\1';
            char s13='\2';
    
    • 1
    • 2
    • 3
    • 4

    但是实际上输出也都是乱码的

    • Unicode
      1.字符字面量可以表示为“\ uxxxx”形式的Unicode转义序列。这里, \u 表示Unicode转义序列的开始,xxxx正好表示四个十六进制数字。
      如s8,
      2.字符文字可以表示为形式为’\ nnn’的八进制转义序列。
      这里,n是八进制数(0-7)。八进制转义序列的范围是’\ 000’到’\ 377’。
    • 直接后面跟数字但是必须在0到65535中
      如s1,s2,s4,s7,s6,s9,,可以定义数字,字母,汉子,但是都只能是一个字符

    char类型的运算和输出

    上面定义实际上就分为两种:

    • 一种是直接后面跟数值,没有单引号,数值表示的是实际上是位置例如s5,s6,十进制分别是123和256,转换成16进制就是007b和0100,代表的字符分别是就是实际上代表在unicode表中第123个字符:{,和第256个字符:Ā
    • 一种是单引号,实际上就是unicode表里面的某个字符
      所以在运算的时候,实际上首先把字符都转换成对应的10进制表示的数来进行运算,最后返回的就是一个int类型的10进制数。而在输出的时候,要根据结果的类型来分,如果是int,自然输出的是int值,如果是char,自然是char值

    如错误,请指出,十分感激

  • 相关阅读:
    拖放操作-拖动文件直接在窗口中显示文件内容
    Linux
    java面试强基(9)
    java计算机毕业设计支部党建工作源程序+mysql+系统+lw文档+远程调试
    亚马逊云科技创新加速周:以数智化手段加速中国企业出海之旅
    Kubernetes Etcd不可用日志:NOSPACE 的问题修复
    趋势列表上又多了两个漏洞!
    牛客网AI面试第五轮
    量化、蒸馏、分解、剪枝
    Day15--加入购物车-初始化vuex
  • 原文地址:https://blog.csdn.net/GDFHGFHGFH/article/details/125891862