char(数字) 转换 int
刷题遇到一个考点是 char型数字 转 int 进行计算的问题。一看就会,一做就错,显然是在这里的认识薄弱了。将一番搜索的结果记录下来,以备再忘来打脸。
char的定义参考:Java基本数据类型之char。
首先,char 跟 int 这两种类型可以直接互转:
char ch1 = 'a';
int i = ch1;
char ch2 = (char)i;
那么面对 char in = ‘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的方法实现。
方法一:
利用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
方法二:
使用 char 包装类Character提供的方法;
char ch1 = '8';
Character.getNumericValue(ch1); // 8
//Character.digit(ch1,10); // 8
方法三:
通过int 包装类 Integer 。
char ch2 = '8';
int i = Integer.parseInt(String.valueOf(ch2)); // 8
方法一最快,方法三慢。测试代码如下:
@Testpublic void test(){int circle = 100000;StopWatch watch = new StopWatch();char ch1 = '8';watch.start("task1");int count = 0;while (count++ < circle){int i = ch1 - '0';}watch.stop();watch.start("task2");count = 0;while (count++ < circle){int i = Character.digit(ch1,10);}watch.stop();watch.start("task3");count = 0;while (count++ < circle){int i = Integer.parseInt(String.valueOf(ch1));}watch.stop();System.out.println(watch.prettyPrint());}结果:
---------------------------------------------
ns % Task name
---------------------------------------------
002761400 010% task1
003343100 012% task2
022454000 079% task3
char(数字) 转换 int相关推荐
- c语言char数字转int补位,关于char强制转换成int到底是用0还是用1补位的猜想与检验...
关于char强制转换成int到底是用0还是用1补位的猜想与检验 最近学C语言发现char强制转换时值会完全不同,而且变化很大,于是决定写代码测试一下. 先检验一下char型的-3和3在内存中分别怎么表 ...
- java如何将char类型的数字转换成int型的数字
java如何将char类型的数字转换成int型的数字 public class CharToIntConverter {public static void main(String[] args) { ...
- char类型与int类型的转换
在c语言中,char类型与int类型可以转换,如何转换我在此做一个粗略的总结 首先是char转换为int #include <stdio.h> int main() {char a ;a ...
- 【C/C++】数字(int / long / long long)与字符串(string)之间的转换
[数字] 转换 "字符串"(int -> string) [头文件] #include <string> 注意这个是string,不是cstring 从C++11 ...
- c语言 char java转换_c语言中char类型转int类型
前言 在九度oj做acm的时候,经常会遇到了char类型和int类型相互转化的问题,这里进行一下总结.今后,可能会多次更新博客,因为半年做了很多总结,但是都是保存在word文档上了,现在开始慢慢向CS ...
- c语言字符串 数字转换函数大全
最近学数据结构老是做实验 常用到字符串和数字的转换 想找却发现网上的资料太散 所以搜集整理一下 方便以后再用 atof(将字符串转换成浮点型数) atoi(将字符串转换成整型数) atol(将字符串转 ...
- c语言一个整数各位数字个数_C语言实现把字符串中的数字转换成整数
===Tips:点击上方 蓝字 关注并查看历史消息=== 本题实现的功能是把字符串中的数字提取转换成整型数字,例如:若输入字符串"ab56cd87",则输出结果:以%d格式输出 ...
- C++字符串和数字转换完全攻略
以字符串形式存储的数字和以数字形式存储的数字之间是有区别的. 例如,字符串 "2679" 就不是一个数字:它是由 2.6.7.9 这 4 个字符的 ASCII 码组成的序列.由于字 ...
- 将字符转换成数字(atoi),将数字转换成字符(itoa)
目录 一.将字符转换为数字. 二.将数字转换成字符. 一.将字符转换为数字. (首先字符必须是"0" -"9",然后转换成十进制的数字) 比如将"12 ...
最新文章
- fastd 3.0 开发的那些事
- 【Oracle 常用查询】oracle表空间使用率统计查询
- 12月10日习题答案大剖析!小伙伴们再接再厉
- 生物研究中不得缺少的数字概念
- django shortcut函数
- 将对象序列化为字符串
- MySQL的Grant命令[转]
- c# 实现圆形的进度条(ProgressBar)
- VS2019正式版注册码秘钥
- 如何将本地图片转换成链接
- 建立时间保持时间及违例如何处理,求最大时钟频率
- 汉信码在iOS客户端中的应用和遇到的坑
- 【渝粤教育】电大中专跨境电子商务理论与实务 (12)作业 题库
- CTF密码学--新手题--Normal_RSA--解题过程及总结
- 算法与数据结构——美团、大众点评笔试题
- 堆和栈的区别以及特点
- rnqoj-99-配置魔药-dp
- 线段,射线,直线的关系
- Relation Extraction 关系抽取综述
- 百度开放云·10大解决方案
热门文章
- 腾讯,百度,金山,可牛,傲游五兄弟结伙的真正原因
- MySQL IFNULL() 函数
- visual studio 2013编译报错 Unable to start program “.../.../.../project.exe,系统找不到指定文件 error LNK2019
- Qtum量子链出席2019年度国盛证券资本市场年会杭州站
- 【Elasticsearch】黑马旅游网实践
- CDQ分治解二维偏序
- html怎么设置背景图 一张图平铺,html怎么设置背景图片全屏平铺?_WEB前端开发...
- 【ABC科创企业案例】高科数聚:把脉消费者视角,洞悉消费力趋向
- 阿里云IoT启动ID² INSIDE商标授权计划,全生态赋能合作伙伴
- html5椭圆搜索框代码,HTML5 椭圆(蛋)运动的小球