java基础类型中的char和byte的辨析及Unicode编码和UTF-8的区别
在平常工作中使用到char和byte的场景不多,但是如果项目中使用到IO流操作时,则必定会涉及到这两个类型,下面让我们一起来回顾一下这两个类型吧。
char和byte的对比
byte
char
Unicode和UTF-8的对比
Unicode
UTF-8
package com.lingyejun.io; import java.io.UnsupportedEncodingException; /**
* Created by Lingye on 2018/9/28 14:34
*/
public class ChineseCharCode { public static void main(String[] args) {
String str = "中";
char c = '中';
// java使用unicode编码,一个字符占两个字节
System.out.println("char字符 中 二进制"+Integer.toBinaryString(c));
try {
// UTF-8是Unicode的实现方式之一
System.out.println(str.getBytes("UTF-8").length);
// UTF-16也是Unicode的实现方式之一,但使用较少
System.out.println(str.getBytes("UTF-16").length);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
输出结果及总结

- 因为Java是以unicode作为编码方式的。unicode是一个定长的编码标准,每个字符都是2个字节,也就是1个char类型的空间。
- Java在编译时会把utf8的中文字符转换成对应的unicode来进行传输运算。
- 在Java中,基本类型char,固定占两个字节,char本质上就是一个无符号的正整数,我们可以使用Integer.toBinaryString(c))将其打印出来。
- UTF-8采用的是变长字节编码的方式进行编码,一个汉字可以以1~4个字节表示一个字符,而中文占3个字节,ascII字符占1个字节。
java基础类型中的char和byte的辨析及Unicode编码和UTF-8的区别的更多相关文章
- java基础类型的byte为长度
java基础类型的字节长度: 类型 byte数/位数 最大/最小值 byte 1/8 127/-128 short 2/16 32767/-32768 int 4/32 2147483647/-214 ...
- Java基础(中)
面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题. 面向对象会先抽象出对象,然后用对象执行方法的方式 ...
- Java基础__Java中自定义集合类
Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
- java.lang基础数据类型boolean、char、byte、short、int、long、float、double (JDK1.8)
java.lang.Boolean public static int hashCode(boolean value) { return value ? 1231 : 1237; } JDK 1.8新 ...
- Java基础类型总结
最近一直在总结反思自己, 趁着现在请假在学校上课的空余时间,从基础开始重新温故学习下Java,充实下自己. 一.数据类型 从下图中,我们可以很清晰的看出Java中的类型,其中红色方框中的是Java的4 ...
- Java基础类型与其二进制表示
Java中的基础类型有:byte.short.int.long.float.double.char和boolean. 它们可被分为四种类型,整型.浮点型.char型和boolean型. 整型:byte ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- Java基础知识中的注意事项
设置Java的相关路径,举例: JAVA_HOME --> C:\Program Files\Java\jdk1.8.0_191 Path ---> C:\Program Fil ...
随机推荐
- Android Tab切换
ViewPager+FragmentStatePagerAdapter 页面切换案例详解 http://blog.csdn.net/u010203181/article/details/4462963 ...
- linux命令之find和locate
1.find / -name log.xml 按照名字查找log.xml文件 2.locate log.xml 查找log.xml文件(效率高) 3.grep 'hive' word. ...
- com.alibaba.fastjson.JSONException: default constructor not found. class ……
1.json工具类 package com.hyzn.fw.util; import java.util.List; import java.util.Map; import com.alibaba. ...
- C++11-新增正则表达式
#include <regex> #include <iostream> #include <string> #include <atlstr.h> s ...
- 《C++ Primer Plus》第10章 对象和类 学习笔记
面向对象编程强调的是程序如何表示数据.使用 OOP 方法解决编程问题的第一步是根据它与程序之间的接口来描述数据,从而指定如何使用数据.然后,设计一个类来实现该接口.一般来说,私有数据成员存储信息,公有 ...
- PyQt4布局管理——绝对定位方式
PyQt4中的布局管理器 布局管理器是编程中重要的一部分.所谓布局管理器是指我们在窗口中安排部件位置的方法.布局管理器有两种工作方式:绝对定位方式(absolute positioning)和布局类别 ...
- MyEclipse 2016 CI修改web项目context-root
右击项目properties——>搜索Deployment Assembly,修改如红框所示的Web Context Root
- HTML的特殊字符-图标对应表
本文摘自:http://www.cnblogs.com/web-d/archive/2010/04/16/1713298.html HTML特殊字符编码大全:往网页中输入特殊字符,需在html代码 ...
- Egret资源管理解决方案
关于egret开发H5页游,资源管理和加载的一点看法. 一 多json文件管理 二 资源归类和命名 三 exml文件编写规范 四 资源预加载.分步加载.偷载 五 资源文件group分组 六 ResUt ...
- C# TOKEN的保存与验证
Token主要为了防止非本页数据的提交,防止重复提交. /** * * 保存TOKEN信息 * */ public void saveToken() { //此处生成md5串 string md5 = ...