zoukankan      html  css  js  c++  java
  • Java中char 与 int 互相转换

    摘要:字符与Int 互相转换

    int与char的互相转换

    int类型是一个32位的数据类型,因为其位有符号数,所以,其取值范围为:-2^31 至 2^31 - 1。

    char为16位的数据,为无符号数,其范围为:0 至 2 ^ 16 -1,即 0 - 65535,

    因此,在java中,无论是一个字符,还是一个字符型变量,实则也是一个数字,所以,可以直接将一个(不超过char的范围的)数字赋值给一个char变量,即可输出其结果:

    char c1 = 97;
    System.out.println(c1);
    输出:a
           
    int num1 = 'a';
    System.out.println(num1);
    输出:97
        
    char c2 = 'a' + 1;
    int num2 = 'a' + 1;
    System.out.println("c2:          " + c2);
    System.out.println("num2:        " + num2);
    System.out.println("(char) num2: " + (char) num2);
    输出:
        c2:          b
        num2:        98
        (char) num2: b
    

    注意:

    char 是16位的 0 至 2 ^ 16 -1,即 0 - 65535 ,int 是32位的,

    对于低位转向高位自适应直接转换,char 转向 int ; int 转向 long

    对于高位转低位需要强制转换

    这里,由于是强制转换,将一个较多位数的类型转换成一个较少位数的类型,因此,可能会有损失发生,若int的数字大于65535,则会丢弃16位以外的数字,如下例:

    int num8 = 65536 + 97;
    char c8 = (char) num8;
    System.out.println(c8);
    
    // 打印num8与c8的十六进制输出
    System.out.println(Integer.toHexString(num8));
    System.out.println(Integer.toHexString(c8));
    

    输出:

    a 
    10061 
    61 
    num8的十六进制表示为0x0001 0061,直接将第一个字节丢弃,变为0x0061,即97,对应的字符为’a’。
    

    技巧

    有一个字符为'1',我们想将其变为数字1,或者,我们想将一个int类型的数字1转换为字符'1',这时,我们就可以这样写:

    // '1' -> 1
    char c9 = '1';
    int num9 = c9 - '0';
    
    // 1 -> '1'
    int num10 = 1;
    char c10 = (char)(num10 + '0');
    
  • 相关阅读:
    LoggingApplicationListener
    Repeated meta-data items
    善待Redis里的数据--Unable to validate object
    mysql启动的四种方式
    mybatis操作动态表+动态字段+存储过程
    VMware 11安装Mac OS X 10.10
    JMS开源比较
    VMware 11安装Mac OS X 10.10
    网页设计的标准尺寸
    FullPage.js
  • 原文地址:https://www.cnblogs.com/Qvolcano-blog/p/14617229.html
Copyright © 2011-2022 走看看