一:背景
在一个项目中,必须修改由数字(0到9 )组成的字符串中特定位置的特定数字。 首先将字符串转换为字符数组,然后利用数组的位置修改相应位置的值。 代码开发完成后,乱码(() ) )、故障诊断结果表明,将数字(0)、9 )转换为字符的态度是错误的。 为了加深印象,记下笔记。
2 :使用错误
将int型数字直接转换为char型数据,如下图-1所示:
publicclasstestchar { publicstaticvoidmain (字符串[ ] args ) for(intI=0,sum=9; I
system.out.print (' theintvalueis : ' I ' theconvertcharvalueis : );
系统. out.println (c;
}
}
}
图-1
三.正确使用
然后,我们发现字符类提供了相应的转换方法,并执行效果,如以下代码所示。 如图(图2 )所示
publicclasstestchar { publicstaticvoidmain (字符串[ ] args ) for(intI=0,sum=9; i=sum; I ) charc=character.fordigit(I,10 );
system.out.print (' theintvalueis : ' I ' theconvertcharvalueis : );
系统. out.println (c;
}
}
}
当然,如果我们的前提条件只是将10个int类型的数字(0到9 )转换为相应的字符表示形式,那么除了字符类提供的方法以外,还有其他选择。 例如,有以下简单的处理方法
方式2:int-String-char
publicclasstestchar { publicstaticvoidmain (字符串[ ] args ) for(intI=0,sum=9; i=sum; I ) charc=string.valueof(I ).charAt(0) 0;
system.out.print (' theintvalueis : ' I ' theconvertcharvalueis : );
系统. out.println (c;
}
}
}
方式3 :用与文字数字的表现形式对应的数字直接转换
publicclasstestchar { publicstaticvoidmain (字符串[ ] args ) for(intI=0,sum=9; i=sum; I ) charc=(char ) ) )0) I );
system.out.print (' theintvalueis : ' I ' theconvertcharvalueis : );
系统. out.println (c;
}
}
}
方式4 :和方式3相同的道理
publicclasstestchar { publicstaticvoidmain (字符串[ ] args ) for(intI=0,sum=9; i=sum; I ) charc=(char ) ) 48 i;
system.out.print (' theintvalueis : ' I ' theconvertcharvalueis : );
系统. out.println (c;
}
}
}
四.问题
为什么使用int直接转换为char的方法是错误的?
嗯,回答这个问题需要理解char的本质
char 3360 thechardatatypeisasingle 16-bitunicodecharacter.ithasaminimumvalueof ' _ u 0000 ' (or0 ) andamaximumvalueof'_ ()
简单的java数据类型(如char )的特点如下:
java语言的八种基本数据类型之一
占2:2字节的16位
3 :最小值为0,最大值为65535
4 :可以用单引号括起来,例如“1”、“a”和“中”,可以用0到0~65535的十进制(也可以是其他进制)整数表示,也可以用“u0000”到“~「ffff”
5 :默认值为“u0000”(或0 )
6 )只有一个字,多,否则不行(空格也是文字) )。
在将int型数据强烈变换为char型数据的情况下,int数据类型是4字节的数据,所以(int的值在char型的范围外时会失去一定的位数),在这种情况下,char型的数据值是与int型的值对应的Unicode编码
(五)其他
下面的简单代码示例和执行结果正好印证了我们的上述观点
publicclasstestchar4{ publicstaticvoidmain { string [ ] args }
system.out.println('1);
system.out.println('a );
System.out.println ('中);
System.out.println (' '; //System.out.println ('; //编译错误,字面//System.out.println ('美国); //编译错误,字符太多,相对于字符字面量
charmax=(char ) ) Character.MAX_VALUE 1;
system.out.println(max; charmin=(char ) ) Character.MIN_VALUE-1;
system.out.println(min; char a=49;
系统. out.println (a; char b=65535; //char b1=65536; //编译失败,发现报纸必须是char型,却是int型
系统. out.println (b ); char c=0; //char c1=-1; //编译失败,发现报纸必须是char型,却是int型
系统. out.println (c; char d='1' 1;
系统. out.println (d; char e='1' '1';
系统. out.println (e; char f='国' 1;
系统. out.println (f;
}
}