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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • java输出语句_java输入输出语句是什么

    java输出语句_java输入输出语句是什么在java中,输入语句为“Scanner对象.next()系列方法”,例“Scanner对象.nextLine()”表示输入字符串;输出语句为“System.out.println()”、“System.out.print()”等。对于经常上机刷题的来说,首先得解决输入输出方法,Java的输入输出流在Java学习过程的后面部分才会接触,但是我们可以掌握一些简单的,常用的输入输出方法输出流java常…

  • 局域网、广域网、互联网「建议收藏」

    局域网、广域网、互联网「建议收藏」局域网局域网的缩写是LAN,localareanetwork,顾名思义,是个本地的网络,只能实现小范围短距离的网络通信。(如下图)我们的家庭网络是典型的局域网。电脑、手机、电视、智能音箱、智能插座都连在无线路由器上,可以互相通信。我们的熟悉的教室网络,也是典型的局域网局域网的通信设备主要是交换机。交换机可以把多个本地的终端连接在一起,帮他们进行数据转发。局域网部署的时候,自己买几台交换机就可以,不需要运营商(电信联通等)提供服务。因特网因特网本质上就是把世界各地的

    2022年10月18日
  • 记:EVE模拟器拓扑配置的保存及导入

    记:EVE模拟器拓扑配置的保存及导入参考博客:https://bbs.51cto.com/thread-1599315-1.html###EVE模拟器版本信息:先关机:点击这里稍等一会,让他保存。再打开开启并点击R1就能看到配置信息已经保存了。正常情况保存就是为了下次登录来使用,关闭所有设备,重新登录界面。先看下配置信息,还在。导入清节点再开启设备,showrun导入成功。…

  • 【Java面试】第二章:P5级面试

    HashMap底层原理,扩容机制,jdk8以后会使用红黑树优化?红黑树和二叉平衡树的区别,红黑树和B树,B+树的区别,Mysql二大引擎索引底层实现,HashMap在多线程环境中为何出错?ConcurrentHashMap底层实现,CAS,原子引用,ABA问题,volatile,如何解决HashMap出现的OOM问题?(WeakHashMap)HashMap是Map的一个实现类,它是以键值对存储数据的,Key-Value都是Map.Entry中的属性。当我们向HashMap中存放一个元素(k1,v1)

  • 一个喜欢研究车的80后开车人,自己的经验和感受英语_开老车的年轻人

    一个喜欢研究车的80后开车人,自己的经验和感受英语_开老车的年轻人1. 白色车,安全系数最高。       澳大利亚研究者新近发布调查报告,黑色汽车在白天与黑夜的事故率均高居榜首。在白天,黑色汽车比白色汽车事故率高12%,在黎明前和黄昏后则高47%。       特别是傍晚的时候,远处跑来一辆黑色轿车,总感觉像穿了隐形衣,我还是比较喜欢白色车,总是很显眼。在民间还有一种说法,白色汽车油耗低,原因是车…

  • Tomcat学习—Tomcat的web.xml配置文件「建议收藏」

    今天开始学习Tomcat的配置文件,自己学习和上网查看整理web.xml 的笔记!

发表回复

您的电子邮箱地址不会被公开。

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