首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java - 一道关于整型和字符类型相加的题目

Java - 一道关于整型和字符类型相加的题目

作者头像
雨临Lewis
发布2022-01-12 10:39:52
发布2022-01-12 10:39:52
3930
举报
文章被收录于专栏:雨临Lewis的博客雨临Lewis的博客

题目

1 2 3 4 5 6 7 8

public class Test { public static void main(final String[] args) { final int a = 10; final int b = 20; System.out.println(a + '+' + b + '=' + (a + b)); } }

乍一看,可能有的同学会觉得很简单,直接给出如下答案:

1

10+20=30

其实这是道陷进题,很容易就看混了,正确的答案是:

1

164

分析

为什么答案会是164

这是因为这里并不是字符串拼接,而是整型与字符类型的加法运算。

用一对单引号'包括起来的是字符,用一对双引号"包括起来的是字符串。

对于字符串来说,用+拼接起来的结果还是字符串。但这道题中,用+拼接起来的是整型和字符类型,就变成了单纯的加法运算。在加法运算中,数据类型会从低位自动转换成高位,因为高位转低位会有数据溢出导致丢失精度的风险。

当整型与字符类型相加时,字符类型会转换成整型,也就是转换成对应的ASCII码值。于是乎,a + '+' + b + '=' + (a + b)就变成了10 + 43 + 20 + 61 + (10 + 20),其运算结果就是164

题目变形

其一

1 2 3 4 5 6 7 8

public class Test { public static void main(final String[] args) { final int a = 10; final int b = 20; System.out.println(a + "+" + b + "=" + (a + b)); } }

这道题的答案就是10+20=30了。

其二

1 2 3 4 5 6 7

public class Test { public static void main(final String[] args) { System.out.println('A'); System.out.println((int)'A'); } }

这道题的答案是:

1 2

A 65

如果我们想知道某个字符对应的ASCII码是多少,可以将其转换成整型,这个值就是其ASCII码值。

警告

本文最后更新于 May 11, 2019,文中内容可能已过时,请谨慎使用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-112,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 题目
  • 分析
  • 题目变形
    • 其一
    • 其二
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档