首页 > 编程知识 正文

char转换成int,char和int的关系

时间:2023-05-03 19:16:19 阅读:34777 作者:3202

问题出在将char型数字转换为int进行计算的问题上。 一看,马上就错了。 很明显,这里的认识很薄弱。 记录搜索结果,以防又忘了打脸。

char定义参考: Java基本数据类型的char。

首先,char和int两种类型可以直接相互旋转。

char ch1='a '; int i=ch1; charch2=(char ) I; 如果对于charin=‘2’需要变换为int进行计算的话,自然认为只要将char型的变量直接代入int型就可以进行计算。

char in='2'; int iVar=in; system.out.println(in; system.out.println(Ivar ); //输出//2//50认为理所当然的做法果然错了:希望取出的int 2实际上是int 50。

将char直接分配给int时,实际上将char变量的ASCII代码分配给int型,因此提取char变量的数值无法通过直接转换为int的方法实现。

方法1 :

利用char变量采用ASCII进行算术运算的特点,可以得到间接计算和获取数值的方法。

char ch1='8'; int iVar=ch1 - '0'; system.out.println(Ivar ); //输出//8 '0'-'9' ASCII是48-57,因为顺序一致,所以char数字的差与数字的差相同。

system.out.println ('9'-'1'==9-1); //true system.out.println ('8'-'0'==8); //true方法2 :

使用char包装类Character提供的方法

char ch1='8'; character.getnumericvalue(ch1; //8//character.digit (ch1,10 ); //8方法3 :

通过int包装类Integer。

char ch2='8'; inti=integer.parseint (string.value of ) ch2 ); //8

方法最快,方法慢三分钟。 测试代码如下。

@ testpublicvoidtest ((int circle=100000; StopWatch watch=new StopWatch (; char ch1='8'; watch.start('task1); int count=0; wile (计数周期) {int i=ch1 - '0); }watch.stop (; watch.start('task2); 计数=0; while (count circle (inti=character.digit ) ch1,10 ); }watch.stop (; watch.start('task3); 计数=0; while(countcircle ) inti=integer.parseint (string.value of ) ch1 ); }watch.stop (; 系统. out.println (watch.pretty print (); (结果----------------- ns % taskname---------------- )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。