int转换为char数组 java_int转换char的正确姿势

int转换为char数组 java_int转换char的正确姿势一 背景在一个项目中 我需要修改一个全部由数字 0 9 组成的字符串的特定位置的特定数字 我采用的方式是先将字符串转换成字符数组 然后利用数组的位置来修改对应位置的值 代码开发完成之后 发现有乱码出现 经过排查发现 我将数字 0 9 转换成字符的姿势不对 现记下一笔 以加深印象 二 错误的使用方式如下代码所示 直接将 int 类型的数字直接转换成了 char 类型的数据 就会出现如 图 1 所示的

一:背景

在一个项目中,我需要修改一个全部由数字(0~9)组成的字符串的特定位置的特定数字,我采用的方式是先将字符串转换成字符数组,然后利用数组的位置来修改对应位置的值。代码开发完成之后,发现有乱码出现([]),经过排查发现,我将数字(0~9)转换成字符的姿势不对,现记下一笔,以加深印象。

二:错误的使用方式

如下代码所示,直接将int类型的数字直接转换成了char类型的数据,就会出现如(图-1)所示的情况

public classTestChar {public static voidmain(String []args){for(int i =0,sum=9; i

System.out.print(“the int value is : “+i+” the convert char value is : “);

System.out.println(c);

}

}

}

06d55daf0944417f64bd84e1de0c7a31.png

图-1

三:正确的使用方式

后来发现字符类提供了对应的转换方法,如下代码所示,执行效果,如(图-2)所示

public classTestChar {public static voidmain(String []args){for(int i =0,sum=9; i<=sum; i++){char c = Character.forDigit(i,10);

System.out.print(“the int value is : “+i+” the convert char value is : “);

System.out.println(c);

}

}

}

2ebc8ab60db652aa24f6faeb2dfc804a.png

当然了,如果,我们的前提条件是,只是将(0~9)这是十个int类型的数字转为其对应的字符表示形式的话,除了使用字符类提供的方法也有别选择,比如,下面的简单处理方式

方式2:int->String-char

public classTestChar {public static voidmain(String []args){for(int i =0,sum=9; i<=sum; i++){char c = String.valueOf(i).charAt(0);

System.out.print(“the int value is : “+i+” the convert char value is : “);

System.out.println(c);

}

}

}

方式3:直接通过字符数字表现形式所对应的数字来转换

public classTestChar {public static voidmain(String []args){for(int i =0,sum=9; i<=sum; i++){char c = (char)('0' +i);

System.out.print(“the int value is : “+i+” the convert char value is : “);

System.out.println(c);

}

}

}

方式4:和方式3一样的道理

public classTestChar {public static voidmain(String []args){for(int i =0,sum=9; i<=sum; i++){char c = (char)(48+i);

System.out.print(“the int value is : “+i+” the convert char value is : “);

System.out.println(c);

}

}

}

四:问题

使用int直接转换为char的方式为什么不对哪?

嗯,要回答这个问题需要弄明白char的本质了

char: The char data type is a single 16-bit Unicode character. It has a minimum value of ‘\u0000’ (or 0) and a maximum value of ‘\uffff’ (or 65,535 inclusive).

char这种简单的java数据类型特点如下:

1:是java语言中8种基本数据类型中的一种

2:它占两个字节十六位

3:最小值是0,最大值是65535

4:它可以通过单引号包装起来表示,比如:‘1’、‘A’、‘中’,也可以使用0~65535十进制(其他进制的数也可以)的整数表示,也可以使用‘\u0000’~’\uffff’表示

5:它的默认值是’\u0000′(或者0)

6:只能是单个字符,多了,没有都不行(空格也是一种字符)

当使用int类型的数据强转为char类型数据的时候,由于int数据类型是占四个字节的数据,(当int的值不在char类型的范围的时候会失去一定位数)此时char类型的数据值是int类型的值所对应的Unicode编码表中所对应的字符。

五:其他

如下简单代码实例和运行结果,恰好印证了我们以上的观点

public classTestChar4 {public static voidmain(String []args){

System.out.println(‘1’);

System.out.println(‘A’);

System.out.println(‘中’);

System.out.println(‘ ‘);//System.out.println(”);//编译错误,空字面量//System.out.println(‘美国’);//编译错误,字符太多了,对于字符字面量而言

char max = (char)(Character.MAX_VALUE+1);

System.out.println(max);char min = (char)(Character.MIN_VALUE-1);

System.out.println(min);char a = 49;

System.out.println(a);char b = 65535;//char b1 = 65536;//编译不通过,报必须是char类型的却发现为int类型的

System.out.println(b);char c = 0;//char c1 = -1;//编译不通过,报必须是char类型的却发现为int类型的

System.out.println(c);char d = ‘1’+1;

System.out.println(d);char e = ‘1’+’1′;

System.out.println(e);char f = ‘国’+1;

System.out.println(f);

}

}

de5162f457280b04326bd77ca0852cac.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177701.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:55
下一篇 2026年3月26日 下午6:55


相关推荐

  • 可视化希尔排序算法是什么_希尔排序一趟排序的结果

    可视化希尔排序算法是什么_希尔排序一趟排序的结果如需转载请标明出处:https://blog.csdn.net/zhuzi9QQ技术交流群:594200841前言概念介绍希尔排序是基于插入排序算法的一种更高效的改进版本。它是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越少,当增量减少至1时,整个文件恰被分成一组。此时算法便终止。原理讲解以[41243421917]这个序列为例说明希尔排序算法的实现原理未开始遍历时,此时效果如下图由上面数组可知

    2022年10月2日
    4
  • c语言在Excel表格中写入数据的代码

    c语言在Excel表格中写入数据的代码include stdio h voidwriteExc intn charch FILE fp NULL 打开文件 fp fopen C Users Zhouhao Desktop cprogram test xls w for inti 1 i lt 6 i printf Pleaseinput scanf d c amp n amp ch stdio h

    2026年3月26日
    3
  • 什么是 URL Schema

    什么是 URL Schema什么是 URLSchema 详情描述 Android 中的 scheme 是一种页面内跳转协议 是一种非常好的实现机制 通过定义自己的 scheme 协议 可以非常方便跳转 app 中的各个页面 通过 scheme 协议 服务器可以定制化告诉 App 跳转那个页面 可以通过通知栏消息定制化跳转页面 可以通过 H5 页面跳转页面等 详细链接点此进入

    2026年3月17日
    2
  • Qt中QString与int,char等互转

    Qt中QString与int,char等互转简述 QString 类提供了丰富的转换函数 可以将一个字符串转换为数值类型或者其他的字符编码集 QString toInt 函数将字符串转换为整型数值 类似的函数还有 toDouble toFloat toLong toLongLong 1 int float double 类型转换为 QString 有两种方法 A

    2026年3月26日
    1
  • 使用这部iphone重设您的apple id密码_bytebuffer.get

    使用这部iphone重设您的apple id密码_bytebuffer.get文章目录创建堆缓冲区和直接缓冲区直接缓冲区与非直接缓冲区运行效率比较包装wrap数据的处理put(byte[]b)和get()方法的使用put(byte[]src,intoffset,intlength)和get(byte[]dst,intoffset,intlength)put(ByteBuffersrc)putType()和getType()slice()方法转换为CharBuffer字符缓冲区及中文的处理设置与获得字节顺序创建只读缓冲区压缩缓冲区比较缓冲区内容复制缓冲区对缓冲区

    2022年10月2日
    4
  • Oracle sql语句修改表名

    Oracle sql语句修改表名方法1:在原表上修改表名ALTERTABLE [原表名称]  RENAME TO [新表名称];方法2:建新表xinTable,将原表oldTable的数据导进去;createtablexintableasselect*fromoldTable;//在原表的基础上建立新表droptableoldTable;//删除原表…

    2022年5月17日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号