对java中char的取值范围思考

2023-11-16

主要说一下我遇到的一个问题,就是网上关于char字符的取值范围定义,有的说是0-255,有的说是\u0000 - \uffff。

其实,这两种说法都对。

我们都知道,java中给char字符的解释是十六位,双字节,也就是按照补码的方式寻求取值范围,就是2^16 - 1,65535,可是有些说法是它的取值范围是0 - 255,数值相差太大,问题就出现在了这里。

 

后来各种百度,发现是java编码的问题,前一种说法中的0-255说的是ascill编码格式,一些常用的英文以及符号都在0 - 255范围之内放着,其余位置并没有存放东西,所以就有了0 - 255取值范围的说法,但世界上的语言很多,尤其是汉语,如果只有英文没有汉语(不讨论GBK),那会非常不方便,所以就有了另一种通用的编码格式unicode编码。

 

Unicode:采用的是十六进制形式,输入的时候采用 '\uxxxx'形式,除了前边的0-255,还在剩余的空间中加入了其余的符号,比如欧洲的一些语言,中国的汉语,而我们的汉字编码是从\u4e00开始,一直到\u8c9f结束,这也将剩余的空间占用了,也就有了取值范围是\u0000 - \uffff的说法,不过可惜汉字很多,unicode编码只收录了一部分常用的汉字。

java中的编码采用的就是unicode编码,源文件使用的是utf-8编码,jvm虚拟机找的.class编译文件使用的是utf-16编码格式。

到此我的疑问就解决了,纯手打,有不对的地方欢迎指正。

(ps. Unicode与ascill重复的部分采取的是取交集,所以在Unicode中a 对应的数字是97,与ascill吗表一样,当时我在这里踩坑了很久)

例子:输出所有的汉字:

public class Arithmetic extends JFrame {



    public static void main(String[] args) {



        int count = 1; //记录汉字的个数

        for(char c = '\u4e00'; c <= '\u8c9f'; c++ ) {

            System.out.print(c + "\t");

            count++;

            if (count % 10 == 0) {

                System.out.println("");

            }

        }

        System.out.println(count);

    }

}

 

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

对java中char的取值范围思考 的相关文章

  • 单片机预备知识(电平、进制转换、字节、数据类型)

    参考 郭天祥十天带你精通51单片机 网址 https www bilibili com video BV1DW411a7mz spm id from 333 788 videocard 0 目录 电平特性 二进制 进制转换 1K字节等于多少
  • Ubuntu18.04 安装cmake-3.18.0,报错openssl

    1 问题描述 Downloads wget https cmake org files v3 18 cmake 3 18 0 tar gz Downloads tar xf cmake 3 18 0 tar gz Downloads cd
  • mvvm框架是什么

    MVVM是Model View ViewModel的简写 它本质上就是MVC Model View Controller 的改进版 在开发过程中 由于需求的变更或添加 项目的复杂度越来越高 代码量越来越大 此时我们会发现MVC维护起来有些吃
  • mysql表操作-约束删除、用户填加、授权和撤权

    目录 一 表的约束删除 1 查看所有表的约束条件 2 删除主键 3 删除唯一键 4 删除check键值 5 删除check键值 6 删除not null键值并删除check键值 7 删除键外值 8 检查表的约束条件是否存在 二 设置数据库密
  • 数据通信介绍

    数据通信方式有两种 串行通信与并行通信 一 串行通信 串行通信是指数据的各位在同一根数据线上逐位发送和接收 如下图所示 它可以按照数据传送方向和通信方式来划分 如果按照数据传送方向分类 则分为以下方式 单工 数据传输只支持数据在一个方向上传
  • 链接库的时候,提示load shared libraries error,xxx file too short

    该问题主要是提示 load shared libraries error xxx file too short 软连接链接问题 原因 程序链接的动态库中有软连接 但是软连接没有 l 标识 被识别成了实际的动态库文件 软连接文件又太小 所以就
  • 使用 vue-router 切换页面时怎么设置过渡动画

    如何实现切换页面时的过渡动画 背景 今天在编写页面时 看到页面没有任何效果就只是直入直出 完全没有一点逼格 所以想要实现类似于原生app的那种切换页面时的特效 遂开始google 发现网上各种方案都是各有优缺点 于是整理了自认为优雅的方案并
  • warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]

    warning gets is deprecated declared at usr include stdio h 638 Wdeprecated declarations 5 c In function getinfo 5 c 20 2
  • Mac Jenkins+fastlane 简单几步实现iOS自动化打包发布 + jenkins节点设置

    最近在使用jenkins 实现ios自动化打包发布蒲公英过程实践遇到了一些坑 特意记录下来方便有需要的人 进入正题 一 安装Jenkins 1 Mac上安装Jenkins 遇到到坑 因为 Jenkins 的pkg安装包默认安装位置为shar
  • 学习Python:探索无限可能

    Python是一种简洁而强大的编程语言 广泛应用于各个领域 从Web开发到数据分析 人工智能和科学计算 学习Python不仅可以提高编程技能 还能为你打开无限的创造力和发展机会 在本文中 我将介绍一些学习Python的重要用途 并提供相应的
  • 链家网页爬虫_爬虫实战1-----链家二手房信息爬取

    经过一段机器学习之后 发现实在是太枯燥了 为了增添一些趣味性以及熟练爬虫 在之后会不定时的爬取一些网站 旨在熟悉网页结构 尤其是HTML的元素 ajax存储 json 熟练使用pyspider scrapy两大框架 掌握基本的request
  • Java-向下转型-instanceof 关键词

    Java 向下转型 instanceof 关键词 1 父类对象转型为子类 package com lmwei p10 public class PersonTest public static void main String args 多
  • [刷题记录]牛客面试笔刷TOP101(二)

    一 传送门 刷题记录 牛客面试笔刷TOP101 一 HY PIGIE的博客 CSDN博客 目录 1 合并二叉树 2 二叉树的镜像 3 判断是否为二叉搜索树 4 判断是不是完全二叉树 1 合并二叉树 合并二叉树 牛客题霸 牛客网 nowcod
  • cpolar 内网穿透FTP Server

    由于FTP协议是个多端口协议 它需要侦听本地TCP 21端口和一个数据传输端口段 1024 65535 所以通常难以穿透 以下为cpolar给出的解决方案 1 创建FTP隧道 在本地安装配置cpolar内网穿透后 创建隧道 cpolar f
  • 关于32单片机IO口8种状态的理解

    最近接触了32单片机 关于对于IO口的学习想记录下来 有什么不对的地方 希望能指出来 进行改正 32单片机IO口共有八种状态 分别是 输入 1 输入浮空 2 输入上拉 3 输入下拉 4 模拟输入 输出 1 开漏输出 2 推挽输出 3 推挽复
  • ElasticSearch第十二讲 ES 集群脑裂问题

    ES集群出现脑裂 脑裂这个词 我们肯定不会陌生 在zk集群 mq集群搭建就考虑过这个问题 为保证部署在不同机房的集群始终保证任何时候只会有一个Leader来协调处理问题 当集群其他机器或者主节点出现故障时 保证重新选举出主节点不影响整个系统
  • vue三种常用获取input值写法

    1 v model 表单输入绑定 使用v model创建双向数据绑定 用来监听用户的输入事件以更新数据 并对一些极端场景进行一些特殊处理
  • 【数据处理】 python 常用操作整理

    python 数据分析常用操作 这是本人在数据分析中 记不住 反复查询的一些命令汇总 在此做个归纳汇总 并不定期更新 Dataframe import pandas as pd 合并DF 需求 有的时候需要将多个列相同的数据集 如别人的训练
  • Python调用OpenAI接口的简单封装

    1 注册OpenAI账号 获取OpenAI API key 网上有很多资料 这里就不再叙述了 科学上网 懂得都懂 一个小坑 在生成API key之后需立刻复制下来 否则将无法再次打开 当然如果错过复制了 也可以再重新生成一个key 2 安装
  • FinalShell 介绍

    官网 http www hostbuf com FinalShell是一体化的的服务器 网络管理软件 不仅是ssh客户端 还是功能强大的开发 运维工具 充分满足开发 运维需求 特色功能 免费海外服务器远程桌面加速 ssh加速 双边tcp加速

随机推荐

  • 设置linux ip命令

    设置linux ip命令 http hi baidu com BD F1 C8 D5 C8 C8 B5 E3 blog item 0b7256308902e19da9018e11 html ifconfig eth0 192 168 168
  • pytorch 自学笔记@_@

    课程 dataset 类 from torch utils data import Dataset from PIL import Image import os class MyData Dataset def init self roo
  • java处理跨域处理

    经常遇到加了跨域但是前端访问还是会跨域 很有可能是没有走你写的跨域的流程 这时候加一个优先级就可以解决这个问题了 一般都是用这个方法 Bean public CorsFilter corsFilter UrlBasedCorsConfigu
  • 用C语言表白

    int day for day 0 day lt Mylife day printf i love you 我们相遇的那一刻起 我愿用一辈子 每天爱你
  • 整十粉丝庆祝文章系列内容征集建议

    亲爱的读者们 大家好 作为一名文章作者 我深知没有读者的支持和喜爱 我的文字就只是无意义的文字堆积 因此 为了庆祝与感谢大家长久以来的支持 我准备举办一场特别的活动 粉丝庆祝文章系列内容征集建议 我想听听你们的声音 了解你们对我写作的喜好
  • 堆和栈的区别以及联系

    堆与栈的区别有 栈内存存储的是局部变量而堆内存是实体 栈内存的更新速度高于堆内存 栈内存的生命周期一结束就会被释放而堆内存会被垃圾回收机制不定时回收 栈中存放的是对象的引用及对象方法中的局部变量的值 参数的值 堆中存放的是实例对象及成员变量
  • 树状结构数据的数据库表设计及使用 - 4. 嵌套集(Nested Set)模型

    本文以 MySQL 为例 文档比较长 故分为5部分发出 邻接表 Adjacency List 模型 路径枚举 Path Enumeration 模型 闭包表 Closure Table 模型 嵌套集 Nested Set 模型 性能比较与分
  • Mac快速打开terminal终端快捷键操作

    Command 空格键跳出搜索框 输入ter 按 enter即可打开
  • 调试osgEarth(33)分页瓦片卸载器子节点的作用-(3)渲染遍历的帧号和时间设置-_真正的terrain使用TerrainCuller---水平方向剔除

    如果还记得来自于何方 看看一个月前如何引入TerrainCuller的 如何判断是否该cull呢 在这里先打个断点 用的包围球 可见 通过VIEW FRUSTUM CULLING SMALL FEATURE CULLING SHADOW O
  • webrtc服务器搭建

    两年前写的笔记 可能有些链接和方式已经不对了 自己评估 文章目录 名词解释 概要 房间服务 信令服务 ICE STUN TURN 服务 Web服务的安装与配置 房间服务 安装与配置 安装 信令服务 turn服务 参考 扩展阅读 other
  • 常用的医学图像分割评价指标

    常用的图像分割评价指标非常多 论文中常用的指标包括像素准确率 交并比 IOU Dice系数 豪斯多夫距离 体积相关误差 下面提到的所有案例都是二分类 标签中只有0和1 目录 一 像素准确率 二 交并比IOU 三 骰子系数Dice 四 Hau
  • 【JavaScript高级】原型和继承相关:原型对象、函数原型、原型链和继承、继承的优化、对象判断相关方法

    文章目录 原型对象 对象的原型 函数的原型 函数原型作用 new操作原型的赋值 将方法放在原型上 constructor属性 在原型中新增属性 重写函数原型对象 原型链和继承 原型链 原型链实现方法的继承 借用构造函数属性继承 继承的优化
  • java8 stream 转换list、map、set

    一 Collection Collections collect Collector Collectos Collection是Java集合的祖先接口 Collections是java util包下的一个工具类 内涵各种处理集合的静态方法
  • 基于FPGA的正弦波发生器设计与实现

    基于FPGA的正弦波发生器设计与实现 摘要 本文介绍了一种基于FPGA的正弦波发生器的设计与实现 通过使用FPGA的数字信号处理功能 可以实现高精度 高性能的正弦波生成 文章首先介绍了DDS Direct Digital Synthesis
  • vs2008中,在OCX控件中应用doc/view基本步骤

    1 利用向导创建一个MFC ActiveX Control控件CMyOCX 2 在工程中加入ActivDoc头文件和执行文件 class CActiveXDocTemplate public CSingleDocTemplate enum
  • 阿里-淘菜菜一面(电话面试)面经

    上来我先给面试官打预防针 我说我准备时间不长 可能不太行 意思是想推迟一段时间再面试 他让我别紧张 面试时间定下来不容易 就先直接面试 问题如下 1 在学校还是在家里 课程怎么样了 在学校 学分修完了 目前在学技术 2 自我介绍 人工智能学
  • Android LayoutInflater原理分析,带你一步步深入了解View(一)

    相信接触Android久一点的朋友对于LayoutInflater一定不会陌生 都会知道它主要是用于加载布局的 而刚接触Android的朋友可能对LayoutInflater不怎么熟悉 因为加载布局的任务通常都是在Activity中调用se
  • 数字化转型背景-数字化转型网

    数字化转型网szhzsw cn 数字化转型是指企业或组织将传统业务模式 流程 技术和文化等方面与数字技术相融合 实现数字化升级和转型的过程 数字化转型的背景有以下几个方面 技术发展 随着科技的不断进步 各种数字技术不断涌现 包括人工智能 物
  • Android Switch控件修改样式

    Android中自带的Switch控件在很多时候总觉得和整体系统风格不符 很多时候 自定义Switch是一种方法 但其实不用这么麻烦 安卓自带的Switch通过修改一些属性 也可以达到和自定义Switch差不多的一个效果 个人感觉 Swit
  • 对java中char的取值范围思考

    主要说一下我遇到的一个问题 就是网上关于char字符的取值范围定义 有的说是0 255 有的说是 u0000 uffff 其实 这两种说法都对 我们都知道 java中给char字符的解释是十六位 双字节 也就是按照补码的方式寻求取值范围 就