一、Char介绍

字符型数据类型。用于存放单个字符。用单引号【' '】括住

2字节,16位。char在java中是16位,因为java用的是Unicode。一个16位的编码所能产生的字符只有65536个。

Unicode码包括ASCII码。大多数计算机采用ASCII(美国标准信息交换码),它是表示所有大小写字母、数字、标点符号和控制字符的8位编码表。从'\u0000'到'\u007F'对应128个ASCII字符。

二、char赋值

1. 概述

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

  • char c='c'; //字符,可以是汉字,因为是Unicode编码。需要加单引号。
  • char c=十进制数,八进制数,十六进制数都可以; //可以用整数赋值【整数范围:0~65535】。输出字符编码表中对应的字符。
  • char c='\u数字'; //用字符的编码值来初始化,如:char='\0',表示结束符,它的ascll码是0,这句话的意思和 char c=0 是一个意思。

2.  实例

//大写字母'A'的ASCII码为十进制数是65。大写字母'A'的ASCII码为八进制数是101。大写字母A''的ASCII码为十六进制数是41char x1 = 65;//为char类型变量x1 赋值常量值 65。十进制编码的ASCII码表中字符'A'对应的是65char x11 = 41;//')'的ASCII码为十进制数是41char x12 = 101;//'e'的ASCII码为十进制数是101char x2 = 'A';//ASCII字符 'A' 的Unicode码是0041。zichar x3 = '\u0041';
//----------------------------------------------------------------int y1 = x1;int y11 = x11;int y12 = x12;int y2 = x2;int y3 = x3;
//----------------------------------------------------------------System.err.println("x1="+x1+", x1的int值="+y1);System.err.println("x11="+x11+", x11的int值="+y11);System.err.println("x12="+x12+", x12的int值="+y12);System.err.println("x2="+x2+", x2的int值="+y2);System.err.println("x3="+x3+", x3的int值="+y3);

x1=A, x1的int值=65
x11=), x11的int值=41
x12=e, x12的int值=101
x2=A, x2的int值=65
x3=A, x3的int值=65

三、char运算

  char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。

1. 总结:

    在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。

(1)char+char,char+int——类型均提升为int,附值char变量后,输出字符编码表中对应的字符。

char m=‘a’+1;   -->b //提升为int,计算结果98对应的字符是b。

(2)自增和自减操作符可以用在char类型变量上,这会得到字符之前或者之后的Unicode字符。

char x1 = 'A';
System.err.println(++x1); //输出B

2. 例子

char a = 65; -->A  //为char类型变量 a 赋值常量值 65。
char b = ‘a’+3; -->D // 65+3=68,ASCII对应的字符为 D【注意:这里查询的是十进制编码的ASCII字符集】
char c = a+3; -->报错 //无法从int类型转换为char类型,接下来让我们了解下为什么会不能这样运算:

  • 首先,我们先知道在jvm内存机制中,char类型数据运算是将字符在ASCII表对应的整数以int类型参与运算(可以认为’ A'=65)
  • 常量(65)与常量(3)运算得到一个新的常量(68),常量赋值给变量(b),不存在强制转换,只要这个接受变量(b)的类型范围大于这个常量即可。
  • 而变量声明时需要定义数据类型(例:char a),内存就为这个变量划分一个char类型大小的空间,其中变量(a)的值是可变的,而常量(3)的值是不变的,两个运算得到的还是一个变量,本例中(a+3)是int类型的变量,而int类型变量(a+3)赋值给char类型变量(c)需要强制转换,因此会报错。

char c=(char)(a+3); -->D

四、为什么char类型的变量可以赋值为整型数字?

char在java中是unicode编码。Java中对char型数据,在内存中存的就是整数,对应一张ASCII码表。

  • 比如说字符知 ‘A’ 对应的是65,字符 ‘a’ 对应的是97 ,所以char c1 = ‘A’ ; 等效于 char c1 = 65 ;

正是因为这样,所以字符型数据既可以作为一个字符使用,也可以作为一个整数使用,所以char型数据可以和int型数据进行运算!

  • 比如 ‘A’ + 1 的结果如果用char型变量接收就是 ‘B’ , 用int型变量接收就是66
  • char c = ‘A’+1; 最后c为’B’
  • int i = ‘A’ + 1 ; 最后i为 66

虽然char型是以整数存储,但是和int型还是有一定区别的,表现在取值范围上:

  • char型 占2个字节 无符号 范围是0~65535,所以char c = 65536 就会报错了,专因为越界了

参考:java基本数据类型各占多少字节-java教程-PHP中文网

Java中关于char类型的变量为什么可以赋值为整型数字_这不是你的确定的博客-CSDN博客_char能赋值数字吗

java的char类型相关推荐

  1. 杂记(1)java读取char类型2. 大小写字母的转换3. 字符串的拼接4. 一串数字排序

    1. java读取char类型 应为java中没有nextchar();函数,所以只能先读取一行,即 Sting a=sc.nextline(); char need=a.charAt(0);//取字 ...

  2. java char 计算_经典Java面试题之Java中Char类型的运算

    经典Java面试题之Java中Char类型的运算 char在java中称为"字符型",占2个字节.本文是百分网小编搜索整理的关于经典Java面试题之Java中Char类型的运算,有 ...

  3. java中char类型可以存储两个中文字符吗

    java中char类型只能存储一个中文字符 https://www.cnblogs.com/lchzls/p/7071862.html https://blog.csdn.net/qq_4264294 ...

  4. Java基础题37:(单选题)java中char类型的取值范围是() A.0 ... 32767 B.0 ... 65535

    37.(单选题)java中char类型的取值范围是() A.0 - 32767 B.0 - 65535 C.–256 - 255 D.–32768 - 32767 [正确答案]B [答案解析]在jav ...

  5. Java中char类型数组打印数组名输出结果不是地址值

    Java中其他类型数组打印数组名,输出结果都是内存地址 Java中char类型数组打印数组名,输出结果不是内存地址 char类型的数组就相当于一个字符串. 因为输出流System.out是PrintS ...

  6. java中char类型_【考点】JAVA中的char类型

    写在前面: 本周,在我们同学的刷题群里,一位同学上传了一道关于char的题,引起的不少同学的热议.热议的同时,我们也发现近乎一半的同学对char的基础知识一知半解,今天我们给大家一个浅显易懂的解释,赶 ...

  7. java 设计char类型_JAVA中的char类型

    1.JAVA中,char占2字节,16位.可在存放汉字 2.char赋值 char a='a';  //任意单个字符,加单引号. char a='中';//任意单个中文字,加单引号. char a=1 ...

  8. 经典Java面试题-Java中Char类型的运算

    [面试原题] 假设y是字符类型,初始化值为'b',那么以下语句输出的结果是什么? A.  System.out.println(++y); B.   System.out.println(y+1); ...

  9. Java基础—char类型数据

    char类型介绍 char类型原本表示单个字符,但由于Unicode字符集扩充,导致有些字符需要使用两个char来描述 大小: 一个char类型占两个字节,16位 范围: 为十进制数 0 ~ 6553 ...

最新文章

  1. Leetcode 141. 环形链表 解题思路及C++实现
  2. 数据中心级交换机考核方法
  3. MySQL—事务及其特征
  4. 【转】NuGet学习笔记(2)——使用图形化界面打包自己的类库
  5. 开发物体识别桌、_【课程总结】AR系统开发“秘籍”大揭秘!
  6. 云计算学习总结(1)——PaaS云平台部署之在Centos7搭建Mesos+Zookeeper+Marathon+Docker单机集群
  7. 探讨:ASP.NET技术的学习顺序问题
  8. 1.5(java学习笔记)this关键字
  9. java找出最高工资和下标_(java)leetcode852 山脉数组的封顶索引(二分查找法找出数组中最大值的下标)(Peak Index in a Mountain Array)...
  10. laravel mysql增删改查_laravel基础laravle中orm简单的增删改查-一颗优雅草男神你姚哥...
  11. csnd-update
  12. WhatsApp营销工具有哪些?
  13. 安装Sublime Text 3
  14. PTV-VISSIM交通仿真软件
  15. 双系统linux开机黑屏,解决双系统中ubuntu开关机异常,黑屏,出现“nouveau , SCHED_ERROR”字样等的问题...
  16. MMORPG游戏服务器技术选型参考
  17. LiveCharts心得
  18. 2018年新浪微博产品笔试题目
  19. centos中文、英文乱码
  20. AI制作卷边文字效果

热门文章

  1. 人员行为识别系统 TensorFlow
  2. 华为优秀员工的16项标准
  3. 《路人甲》 很适合喜欢动脑的人!
  4. 怎么彻底删除SQL server
  5. Android修行手册 - Toolbar实践
  6. 文泰 单笔划 字 教程
  7. gets() 与puts()的用法
  8. 使用Python进行数据分析——线性回归分析
  9. 【HAL库】HAL库STM32cubemx快速使用
  10. [转载]DbHelper的常用数据库类