Java中使用println打印char数组元素显示方框而非数字3的问题
问题分析与解决方案
嘿,这个问题我太清楚了!咱们一步步来理清楚:
核心原因
Java中的char类型本质是16位Unicode字符编码,而不是用来存储普通整数的。当你把2、3这类整数直接赋值给char变量时,Java会把这些整数当作Unicode码点来解析。
比如你代码里的a[1] = 3,对应的Unicode码是U+0003——这是一个不可打印的控制字符(功能是“结束文本”),控制台无法显示这类字符,所以就会输出方框或者空白符号。
至于你提到的int数组也有同样错误,大概率是你把int数组的元素强制转换成char输出了(比如System.out.println((char)a[1])),本质还是同一个Unicode码点的问题。
解决方案
根据你的需求,有几种处理方式:
1. 直接存储并输出数字
如果你的目标就是存储整数、输出数字本身,最直接的方法是用int数组:
package basics; public class Demo3 { public static void main(String[] args) { int a[]={2,3,4,5}; System.out.println(a[1]); // 正常输出3 } }
2. 用char存储数字字符
如果一定要用char数组,需要把数字写成字符字面量(用单引号包裹),这样存储的就是数字对应的Unicode字符:
package basics; public class Demo3 { public static void main(String[] args) { char a[]={'2','3','4','5'}; System.out.println(a[1]); // 正常输出3 } }
3. 输出char对应的码点数值
如果你的业务场景确实需要用char存储编码值,又想输出它对应的整数,可以把char强制转换成int再输出:
package basics; public class Demo3 { public static void main(String[] args) { char a[]={2,3,4,5}; System.out.println((int)a[1]); // 输出3,也就是该字符的Unicode码点数值 } }
内容的提问来源于stack exchange,提问作者Saurabh Singh
相关产品推荐
相关产品推荐

