文档章节

Char类型的运算

博为峰教研组
 博为峰教研组
发布于 2017/06/19 15:18
字数 590
阅读 8
收藏 0

[面试原题]

假设y是字符类型,初始化值为‘b’,那么以下语句输出的结果是什么?

A.   System.out.println(++y);

B.    System.out.println(y+1);

[正确答案]

      A. ‘c’

      B.  99

[面试技术点]

字符在java中的运算。

[解读A]

      char在java中称为“字符型”,占2个字节。字符常量是用单引号括起的一个字符,且字符常量在内存中存储的是该字符在Unicode字符集中的排序位置,即整数。

比如:

char y='b';

内存y中存储的是字符’b’在Unicode字符集中的排序位置98。【可以通过语句System.out.println((int)y);来获取Unicode的排序位置。】因此上面的语句也可以写成:

char y=98;

      System.out.println(++y);语句,先执行++y,结果为99,然后输出对应位置的字符’c’。

      [解读B]

      博为峰小博老师在这里要给大家说一个概念,java中的“向上兼容”,即:不同数据类型的数据参与运算,数据类型要强制转换,转换的方向是:char->short->int->long->float->double。

      在System.out.println(y+1);这个语句中,y是char类型,1是int类型,所以把y强转成int,然后运算结果是99,输出也是int类型99。

      [扩展]

      char是Java中的字符类型,与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode。不过8位的ASCII码包含在Unicode中,是从0~127的。

Java中使用Unicode的原因是,Java的Applet允许全世界范围内运行,那它就需要一种可以表述人类所有语言的字符编码Unicode。但是English,Spanish,German, French根本不需要这么表示,所以它们其实采用ASCII码会更高效。这中间就存在一个权衡问题。

因为char是16位的,采取的Unicode的编码方式,所以char就有以下的初始化方式:

char c='a'; //字符,可以是汉字,因为是Unicode编码,如char c=’我’,内存对应的unicode值为:25105。

char c=十进制数,八进制数,十六进制数等等; //可以用整数赋值

char c='\u数字'; //用字符的编码值来初始化,如:char='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。

Unicode编码表:

© 著作权归作者所有

博为峰教研组
粉丝 50
博文 1224
码字总数 479077
作品 0
黄浦
程序员
私信 提问
C语言隐式类型转换

隐式类型转换分三种,即算术转换、赋值转换和输出转换。 1.算术转换 进行算术运算(加、减、乘、除、取余以及符号运算)时,不同类型数招必须转换成同 一类型的数据才能运算,算术转换原则为...

长平狐
2012/09/03
1K
0
2.2 Java数据类型转换

数据类型的转换,分为自动转换和强制转换。自动转换是程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换;强制类型转换则必须在代码中声明,...

李序锴
2017/12/28
0
0
Java基础复习

Java变量的命名规则 1.可以由字母、数字、“_”或“$”符组成,但是不能以数字开头。2.中文可以作为变量名,但不提倡使用。3.Java大小写敏感,即:严格区分大小写,在给命名变量时需要注意。...

yangjianliu
2016/12/20
5
0
小端模式与强制数据类型转换

小端模式与强制数据类型转换 1.先从一个问题说开去 C++数据类型转换的问题 这里为什么输出的是b? 2.先检测一下我们所使用的电脑的CPU的字节序 版本一(有问题,结果无论如何都是34,不能说明...

长平狐
2013/06/03
456
0
Oracle中的日期类型及常用函数

oracle 数据类型详解---日期型(转载) oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资...

猴亮屏
2014/06/03
190
0

没有更多内容

加载失败,请刷新页面

加载更多

DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
今天
3
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
5
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部