Java中关于char类型的变量为什么可以赋值为整型数字

2023-10-27


文章出处:链接


1、JAVA中,char占2字节,16位。可在存放汉字

2、char赋值

char a=‘a’; //任意单个字符,加单引号。

char a=‘中’;//任意单个中文字,加单引号。

char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。

注:只能放单个字符。

3、char运算

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

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


示例1:
char m=‘a’;   -->a
char m=‘a’+‘b’;   -->? //char类型相加,提升为int类型,输出对应的字符(a和b分别对应 的数值为97和98,相加等于195,其对应的字符为 ?)。
int m=‘a’+‘b’;   -->195 //195没有超出int范围,直接输出195。
char m=197;   -->? //输出字符编码表中对应的字符。
char m='197;   -->报错 //因为有单引号,表示是字符,只允许放单个字符。
char m=‘a’+1;   -->b //提升为int,计算结果98对应的字符是b。
char m=‘中’+‘国’;    -->42282
char m=‘中’+‘国’+‘国’+‘国’;  -->报错 //int转char有损失。因为结果已经超出char类型的范围。
int m=‘中’+‘国’+‘国’+‘国’;   -->86820
char m=‘中’+1;   -->丮 //1是int,结果提升为int,输出对应的字符。
char m=‘中’+“国”;  -->报错 //String无法转换为char。
System.out.println(‘中’+“国”);  -->中国 //没有变量附值的过程。String与任何字符用“+”相连,转换为String。


示例2:

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

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


总结:

用单引号’ '标识,只能放单个字符。
char+char,char+int——类型均提升为int,附值char变量后,输出字符编码表中对应的字符。

为什么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 就会报错了,专因为越界了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中关于char类型的变量为什么可以赋值为整型数字 的相关文章

随机推荐

  • windows ce操作系统能用哪个导航_Windows 和 Linux 比较

    1 操作系统设计复杂度对比 就操作系统复杂度windows server 要比 linux server 更复杂 2 市场占有率对比 特指的服务器市场占有率 非PC桌面 1 linux 大多数版本是免费的 windows 收费 在大规模集群
  • 基于matlab的长短期神经网络lstm的股票预测

    目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的股票预测 MATALB编程实现 附有代码 及链接基于matlab编程的的长短期神经网络LSTM的股票价格的预测 基于深度学习神经网络的股票价格预测 深度学
  • Unity 中控(二)

    前面写到控制投影 接着就是对电脑的开关的控制 依然是先到网上查资料 然后总结下 在同一局域网下 远程开电脑是同通过网卡的Mac地址 UDP广播数据实现开机 关机是调用系统的运行命令 shutdown s m 192 168 0 106 t
  • 10个每个人都用得到的视频下载网站

    1 油管视频下载 www 4kvideodownloader com 2 哔哩哔哩视频解析下载 bilibili iiilab com 3 小视频下载 www downfi com video 4 图二工具 www tool2 cn 5 小
  • Spring MVC-表单(Form)标签-文件上传(File Upload)示例(转载实践)

    以下内容翻译自 https www tutorialspoint com springmvc springmvc upload htm 说明 示例基于Spring MVC 4 1 6 以下示例显示如何使用Spring Web MVC框架在表
  • k8s 之二 kubeadm安装k8s集群

    1 概述 k8s的部署常见的工具和环境 1 IaaS 虚拟机 1 1托管模型 部署在公有云上 K8SaaS 目前没有用于生产环境 1 2VPS 和本地物理机搭建一样 但是这里网络是虚拟网络了 2 物理机 3 1 构建工具 Rancher 2
  • 面向ASIC设备的编译器框架:TVM or MLIR?

    2019 2021年 摩尔定律失效 这一关键词频频出现于各大技术网站 在此背景下 市面上多如牛毛的AI芯片公司不约而同地给出了通用CPU 专用ASIC芯片的方案 以应对日益增长的AI边 端侧推理计算需求 在AI DSA芯片的开发实践中 棘手
  • jar包打成docker镜像文件推送至服务器,服务器拉取并重启容器

    windows电脑需要去docker官网下载Docker Desktop 这里需要注意两点 windows电脑需要开启hyper v 控制面板 所有控制面板项 程序和功能 启用或关闭Windows功能 勾选上 然后等待系统重启应用 Dock
  • 关于NgRx的状态管理

    什么是NgRx 简单的讲 NgRx 是继 Redux 之后 结合 RxJs 的产物 可以说 它是 Angular 天生的 伴侣 帮助 Angular 做状态管理 NgRx 主要有三种模式 分别为 NgRx Store NgRx Effect
  • Android VLC播放器二次开发1——程序结构分析

    最近因为一个新项目需要一个多媒体播放器 所以需要做个视频 音频 图片方面的播放器 也查阅了不少这方面的资料 如果要从头做一个播放器工作量太大了 而且难度也很大 所以最后选择了VLC作为基础 进行二次开发 选择VLC的原因有两个 第一 VLC
  • 文件夹权限禁用和解除禁用

    1 文件夹权限禁用 右键文件夹 属性 安全 选择对应的用户 编辑 拒绝一栏打钩 确定 然后你会发现 文件夹对应的权限没有了 无法打开文件夹 无法重命名等 1 文件夹权限解除禁用 文件夹右键 属性 安全 高级 继续 删除禁用的用户
  • Altium Designer(AD)软件使用记录08-PCB布局部分

    目录 Altium Designer AD 软件使用记录08 PCB布局部分 一 交互是模块化抓取的设置 二 模块化及PCB 的预布局分析 三 核心最小系统 DSP SDRAM FLASH 及拓扑结构分析 四 基于CPLD 的模块布局 五
  • Day2 R (Rstudio) 的更新,R 中包的安装与更新

    1 R Rstudio 的更新与安装 R 的安装请参考官网 R的更新 Windows install packages installr require installr updateR Mac 安装devtools包 如果已经安装 跳过此
  • H5页面不同屏幕适配:纯CSS方案

    背景 UI给出的设计稿 一般是以iphone6屏幕大小为准 也就是宽高为375 667 激进一些的还会使用414 736的设计稿 在其他不同尺寸的屏幕上适配的问题也就由此诞生 一般新搭建的项目都要处理这个问题 常见方案 目前市面上比较常见的
  • Vue AES+MD5加密 后台解密

    前端VUE vue项目中安装crypto js npm install crypto js save dev CryptoJS crypto js 为 JavaScript 提供了各种各样的加密算法 目前已支持的算法包括 MD5 SHA 1
  • python打开网页被禁止_Python爬虫被禁?看看是不是这几个问题

    Python爬虫在网上完成网站的信息采集时 常常出现无缘无故的ip被禁的情况 正爬取呢就没法继续了 造成日常业务也没办法正常进行了 整个人都不好了呢 一部分人完全不清楚被禁的原因 这么简单的就给禁掉了 究竟是哪个地方不对呢 首先 和大家介绍
  • VS2013 curl源码编译(二)之zlib 1.2.11编译

    已编译好的资源 https download csdn net download key xiaodj 10825531 转载处 https blog csdn net jaggerjack330 article details 82721
  • Python Basics 笔记

    9 14 问题 gt gt gt s Python is Fun gt gt gt s 1 5 从1到第四 ytho gt gt gt s 5 从0到第四 Pytho gt gt gt s 1 从1到最后 ython is Fun gt g
  • 《计算机视觉中的多视图几何》笔记(0)

    为什么要做这个专栏 计算机视觉的一大研究目标是使计算机具有通过2D图像认知3D环境信息的能力 近年来 随着SLAM SfM MVS NeRF等技术的爆火和相关产业的蓬勃发展 越来越多的人加入到三维重建的领域当中 然而 如何入门3D视觉是一件
  • Java中关于char类型的变量为什么可以赋值为整型数字

    文章出处 链接 1 JAVA中 char占2字节 16位 可在存放汉字 2 char赋值 char a a 任意单个字符 加单引号 char a 中 任意单个中文字 加单引号 char a 111 整数 0 65535 十进制 八进制 十六