char转换为数字_char字符转int

char转换为数字_char字符转int刷题遇到一个考点是char型数字转int进行计算的问题。一看就会,一做就错,显然是在这里的认识薄弱了。将一番搜索的结果记录下来,以备再忘来打脸。char的定义参考:Java基本数据类型之char。首先,char跟int这两种类型可以直接互转:charch1=’a’;inti=ch1;charch2=(char)i;那么面对charin=‘2’需要转成int做计算,那么很…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

         刷题遇到一个考点是 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

方法一最快,方法三慢。测试代码如下:

    @Test
	public 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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 七、观察者模式——关注我,分享旅途最浪漫的瞬间! #和设计模式一起旅行#

    最浪漫的事就是在路上,身边有你陪伴!故事背景在路上,和设计模式MM,做过飞机,也骑过单车,从大中国到了东京,东京真的很热(知道那啥啥为什么叫东京热了吧)。这一路不断的分享我们走过的路和看过的风景,旅行就是如此的美好,看别人看的厌烦过的风景,走别人走了无数遍的路!只有自己走过了,才算是经历!(就如我的这一场设计模式的学习总计之路,不管有多少人分享过,我依然要自己在过一遍,其中的意…

    2022年2月27日
    164
  • 约分最简分式(python)

    约分最简分式(python)约分最简分式分数可以表示为分子 分母的形式 编写一个程序 要求用户输入一个分数 然后将其约分为最简分式 最简分式是指分子和分母不具有可以约分的成分了 如 6 12 可以被约分为 1 2 当分子大于分母时 不需要表达为整数又分数的形式 即 11 8 还是 11 8 而当分子分母相等时 仍然表达为 1 1 的分数形式 输入格式 输入在一行中给出一个分数 分子和分母中间以斜杠 分隔 如 12 34 表示 34 分之 12 分子和分母都是自然数 不包含 0 如果不清楚自然数的普世定义的话 提示 在 split

    2025年10月12日
    3
  • 配置管理项的定义

    配置管理项的定义项目立项后 无论项目规模如何 基于管理需要 我们都会建立配置管理计划 配合项目的有效管理 根据项目特点及管理模式 项目配置项的建立各不相同 可是 无论怎么改变 最终的目标都是一个 方便项目管理 便于资源共享 nbsp nbsp nbsp 最近一个项目中 我在配置项中采取如下思想进行配置计划 nbsp nbsp nbsp 一级目录 以 trunk branches tags 为起点 考虑到配置管理工具 我们选择流行的 svn 基线 trun

    2025年7月2日
    0
  • Pycharm 2021.2.3激活码破解方法

    Pycharm 2021.2.3激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    716
  • 关于ModifyStyleEx无效的问题

    关于ModifyStyleEx无效的问题在做MFC时,有时候我们需要显示选择一个项目,比如需要标记所选择的图片控件。我们可以用这个函数:BOOLModifyStyleEx(  DWORD dwRemove,  DWORD dwAdd,  UINT   nFlags)或者BOOLModif

    2022年7月19日
    14
  • Spring+Struts+Hibernate 简介(转)

    Spring+Struts+Hibernate 简介(转)

    2021年9月10日
    66

发表回复

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

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