精华内容
下载资源
问答
  • 我们平常说,java中char占2个字节,可又说汉字在不通的编码格式中所占的... 那么问题来了,在java程序运行的时候,究竟汉字占几个字节呢?--------------------------在讨论这个问题之前,我们需要先区分unicode和...

    我们平常说,java中char占2个字节,可又说汉字在不通的编码格式中所占的位数是不同的,比如gbk中汉字占2个字节,utf8中多数占3个字节,少数占4个。而所有汉字在java程序中我们都可以简单的用 char c = '字' 表示; 那么问题来了,在java程序运行的时候,究竟汉字占几个字节呢?

    --------------------------

    在讨论这个问题之前,我们需要先区分unicode和UTF。

    1、unicode :统一的字符编号,仅仅提供字符与编号间映射。符号数量在不断增加,已超百万。详细:[

    https://zh.wikipedia.org/zh-cn/Unicode]

    2、UTF :unicode转换格式 (unicode transformation format) 。定义unicode中编号的编码方式。utf8和utf16便是其中两种实现方式。其中utf8为变长表示,长度可能时1~6个字节;utf16为变长表示,长度可能是2或4个字节。详细:UTF8 [

    https://zh.wikipedia.org/zh-cn/UTF-8] UTF16 [

    https://zh.wikipedia.org/zh-cn/UTF-16]

    接着,要分清内码(internal encoding)和外码(external encoding)。

    1、内码 :某种语言运行时,其char和string在内存中的编码方式。

    2、外码 :除了内码,皆是外码。

    要注意的是,源代码编译产生的目标代码文件(可执行文件或class文件)中的编码方式属于外码。

    先看一下内码

    JVM中内码采用UTF16。早期,UTF16采用固定长度2字节的方式编码,两个字节可以表示65536种符号(其实真正能表示要比这个少),足以表示当时unicode中所有字符。但是随着unicode中字符的增加,2个字节无法表示所有的字符,UTF16采用了2字节或4字节的方式来完成编码。Java为应对这种情况,考虑到向前兼容的要求,Java用一对char来表示那些需要4字节的字符。所以,java中的char是占用两个字节,只不过有些字符需要两个char来表示。

    详细:

    外码

    Java的class文件采用UTF8来存储字符,也就是说,class中字符占1~6个字节。

    Java序列化时,字符也采用UTF8编码,占1~6个字符。

    总结:

    1、java中内码(运行内存)中的char使用UTF16的方式编码,一个char占用两个字节,但是某些字符需要两个char来表示。所以,一个字符会占用2个或4个字节。

    2、java中外码中char使用UTF8的方式编码,一个字符占用1~6个字节。

    3、UTF16编码中,英文字符占两个字节;绝大多数汉字(尤其是常用汉字)占用两个字节,个别汉字(在后期加入unicode编码的汉字,一般是极少用到的生僻字)占用四个字节。

    4、UTF8编码中,英文字符占用一个字节;绝大多数汉字占用三个字节,个别汉字占用四个字节。

    ----------------------------------------------

    综上,java运行时采用utf16编码,多数汉字占2个字节,一个char就够了,少数占4个字节,需要两个char来表示。

    说明:utf16中,通常汉字2字节,CJKV扩展B区、扩展C区、扩展D区的汉字占4个字节。

    展开全文
  • java中char占几个字节?java中的一个char占用2个字节。java采用unicode,2个字节来表示一个字符。 一个数字或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个字节都为0,就是浪费了点空间。存...

    b61e1b606079d4fb7be7c658fc739e65.png

    java中char占几个字节?

    java中的一个char占用2个字节。java采用unicode,2个字节来表示一个字符。 一个数字或英文或汉字都是一个字符,只不过数字和英文时,存储的2个字节的第一个字节都为0,就是浪费了点空间。存汉字就占满了2个字节。

    1:“字节”是byte,“位”是bit ;

    2: 1 byte = 8 bit ;

    例子代码如下:public class Test {

    public static void main(String[] args) {

    String str = "中";

    char x = '中';

    byte[] bytes = null;

    byte[] bytes1 = null;

    try {

    bytes = str.getBytes("utf-8");

    bytes1 = charToByte(x);

    } catch (UnsupportedEncodingException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    System.out.println("bytes 大小:" + bytes.length);

    System.out.println("bytes1大小:" + bytes1.length);

    }

    public static byte[] charToByte(char c) {

    byte[] b = new byte[2];

    b[0] = (byte)((c & 0xFF00) >> 8);

    b[1] = (byte)(c & 0xFF);

    return b;

    }

    }

    运行结果:bytes 大小:3

    bytes1大小:2

    java是用unicode来表示字符,"中"这个中文字符的unicode就是2个字节。

    String.getBytes(encoding)方法是获取指定编码的byte数组表示,

    通常gbk/gb2312是2个字节,utf-8是3个字节。

    如果不指定encoding则取系统默认的encoding。

    php中文网,大量的免费Java入门教程,欢迎在线学习!

    展开全文
  • 我们平常说,java中char占2个字节,可又说汉字在不通的编码格式中所占的... 那么问题来了,在java程序运行的时候,究竟汉字占几个字节呢?--------------------------在讨论这个问题之前,我们需要先区分unicode和...

    我们平常说,java中char占2个字节,可又说汉字在不通的编码格式中所占的位数是不同的,比如gbk中汉字占2个字节,utf8中多数占3个字节,少数占4个。而所有汉字在java程序中我们都可以简单的用 char c = '字' 表示; 那么问题来了,在java程序运行的时候,究竟汉字占几个字节呢?

    --------------------------

    在讨论这个问题之前,我们需要先区分unicode和UTF。

    1、unicode :统一的字符编号,仅仅提供字符与编号间映射。符号数量在不断增加,已超百万。详细:[https://zh.wikipedia.org/zh-cn/Unicode]

    2、UTF :unicode转换格式 (unicode transformation format) 。定义unicode中编号的编码方式。utf8和utf16便是其中两种实现方式。其中utf8为变长表示,长度可能时1~6个字节;utf16为变长表示,长度可能是2或4个字节。详细:UTF8 [https://zh.wikipedia.org/zh-cn/UTF-8] UTF16 [https://zh.wikipedia.org/zh-cn/UTF-16]

    接着,要分清内码(internal encoding)和外码(external encoding)。

    1、内码 :某种语言运行时,其char和string在内存中的编码方式。

    2、外码 :除了内码,皆是外码。

    要注意的是,源代码编译产生的目标代码文件(可执行文件或class文件)中的编码方式属于外码。

    先看一下内码

    JVM中内码采用UTF16。早期,UTF16采用固定长度2字节的方式编码,两个字节可以表示65536种符号(其实真正能表示要比这个少),足以表示当时unicode中所有字符。但是随着unicode中字符的增加,2个字节无法表示所有的字符,UTF16采用了2字节或4字节的方式来完成编码。Java为应对这种情况,考虑到向前兼容的要求,Java用一对char来表示那些需要4字节的字符。所以,java中的char是占用两个字节,只不过有些字符需要两个char来表示。

    详细:

    外码

    Java的class文件采用UTF8来存储字符,也就是说,class中字符占1~6个字节。

    Java序列化时,字符也采用UTF8编码,占1~6个字符。

    总结:

    1、java中内码(运行内存)中的char使用UTF16的方式编码,一个char占用两个字节,但是某些字符需要两个char来表示。所以,一个字符会占用2个或4个字节。

    2、java中外码中char使用UTF8的方式编码,一个字符占用1~6个字节。

    3、UTF16编码中,英文字符占两个字节;绝大多数汉字(尤其是常用汉字)占用两个字节,个别汉字(在后期加入unicode编码的汉字,一般是极少用到的生僻字)占用四个字节。

    4、UTF8编码中,英文字符占用一个字节;绝大多数汉字占用三个字节,个别汉字占用四个字节。

    ----------------------------------------------

    综上,java运行时采用utf16编码,多数汉字占2个字节,一个char就够了,少数占4个字节,需要两个char来表示。

    说明:utf16中,通常汉字2字节,CJKV扩展B区、扩展C区、扩展D区的汉字占4个字节。

    展开全文
  • 主要介绍了java中的char占几个字节实例分析的相关资料,需要的朋友可以参考下
  • java中的char占几个字节实例分析1:“字节”是byte,“位”是bit ;2: 1 byte = 8 bit ;char 在Java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。例子代码如下:public class Test {public static...

    java中的char占几个字节实例分析

    1:“字节”是byte,“位”是bit ;

    2: 1 byte = 8 bit ;

    char 在Java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。

    例子代码如下:

    public class Test {

    public static void main(String[] args) {

    String str= "中";

    char x ='中';

    byte[] bytes=null;

    byte[] bytes1=null;

    try {

    bytes = str.getBytes("utf-8");

    bytes1 = charToByte(x);

    } catch (UnsupportedEncodingException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    System.out.println("bytes 大小:"+bytes.length);

    System.out.println("bytes1大小:"+bytes1.length);

    }

    public static byte[] charToByte(char c) {

    byte[] b = new byte[2];

    b[0] = (byte) ((c & 0xFF00) >> 8);

    b[1] = (byte) (c & 0xFF);

    return b;

    }

    }

    运行结果:

    bytes 大小:3

    bytes1大小:2

    java是用unicode来表示字符,"中"这个中文字符的unicode就是2个字节。

    String.getBytes(encoding)方法是获取指定编码的byte数组表示,

    通常gbk/gb2312是2个字节,utf-8是3个字节。

    如果不指定encoding则取系统默认的encoding。

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • 我们平常说,java中char占2个字节,可又说汉字在不通的编码格式中所占的... 那么问题来了,在java程序运行的时候,究竟汉字占几个字节呢?--------------------------在讨论这个问题之前,我们需要先区分unicode和...
  • 我们平常说,java中char占2个字节,可又说汉字在不通的编码格式中所占的位数是不同的,比如... 那么问题来了,在java程序运行的时候,究竟汉字占几个字节呢? -------------------------- 文章抄袭自:http://www...
  • char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。例子代码如下:public class Test {public static void main(String[] args) {String str= "中";char x ='中';byte[] bytes=null;...
  • 1:“字节”是byte,“位”是bit ... char 在Java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。  例子代码如下: [java]view plaincopy print? publicclassTest{ public...
  • java char占几个字节

    2013-04-14 18:32:30
    一直认为java的char占2个字节, FileWriter的write (int c)函数一直认为输出两个字节; 但今天测了下,结果和我想的不一样; FileWriter fw =new FileWriter("test.txt"); char c1 ='你'; char c2='1'; int ...
  • 关于char占几个字节的问题如下

    千次阅读 2017-10-11 18:34:10
    一:char的初始化 char是Java中的保留字,与别的语言不同的是,char在Java中是16位的,因为Java用的是Unicode。不过8位的ASCII码包含在Unicode中,是从0~127的。 Java中使用Unicode的原因是,Java的Applet允许全...
  • 场景一:CHAR(30)的最大字符数和最大字节数计算1.CHAR(30)在UTF-8字符集下计算最大字符数和最大字节数(product)root@localhost [test]> show create table t1\G*************************** 1. row *************...
  • byte1个字节8位,取值范围为-2^7~2^7-1 int4个字节32位,取值范围为-2^31~2^31-1 short2个字节16位,取值范围为-2^15~2^15-1 long8个字节64位,取值范围为-2^63~2^63-1 float4个字节...
  • 在java中,char类型2个字节;原因:Java编译器默认使用Unicode编码,因此2字节(16位)可以表示所有字符。java中2个字节有short和char;而byte和boolean1个字节,int和float4个字节。本教程操作环境:windows7...
  • 我一想char不是个字节吗?汉字在utf-8中个字节(还有四字节的),char不能够表示!对方一笑,让我后面查查 所以网上搜了一些资料查查,并做一个例子: public class BytesOfChar { public static byte[] ...
  • java 中char占几个字节

    万次阅读 2018-07-30 11:23:18
    Java基本类型占用的字节数: 1字节: byte , boolean 2字节: short , char 4字节: int , float 8字节: long , double 注:1字节(byte)=8位(bits)...综上,中文字符在编码中占用的字节数一般是2-4个字节。  ...
  • Java中Char占用几个字节???

    千次阅读 2019-09-16 10:51:46
    也许你看到的一些书上说Char占用2个字节,但事实真的的是这样吗? 非也: 与编码格式、中英文均有关系 uft8编码下3个字节;GBK编码下2个字节; 但是如果 char表示英文字母: 在uft8编码下个字节;在GBK...
  • 展开全部C/C++中的int占4个字节,62616964757a686964616fe59b9ee7ad9431333431353363char占1个字节;Java中的int占4个字节,char却占1~6个字节,要根据使用的编码和具体字符而定。目前在一般的电脑中,int占用4字节...
  • 一、功能介绍C语言中字节长度的思考C语言中不同类型数据所占字节数的思考C语言中sizeof关键字的介绍二、问题分析简单看下面一段代码,想一下输出应该是什么。charcVar=0x0100;intiVar=0;printf("cVar=%d\n",cVar); ...
  • 在C,C++,JAVA中int,char,各占几个字节 int 在C和C++的占用2个字节,在java中4个字节 char在C和C+中占一个字节 Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所以一...
  • char在struct中到底占几个字节!!

    千次阅读 2019-08-12 12:49:07
    struct student { char a; int c; short b; };... printf("%d\n", sizeof...这时char所给分配的是4个字节(因为int4个字节) struct student { char a; short b; int c; }; printf("%d\n", sizeof(struc...
  • int在16位编译器中个字节,int在32位编译器中个字节。“int”是整数类型的类型名,长整型的类型名为...1、16位编译器char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节unsi...
  • Java中char,short,int,long占几个字节和多少位

    万次阅读 多人点赞 2018-03-09 09:39:16
    char占用的是2个字节 16位,所以一个char类型的可以存储一个汉字。 整型: byte:1个字节 8位 -128~127 short :2个字节 16位 int :4个字节 32位 long:8个字节 64位 浮点型: float:4个字节 32 位 doub...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 545
精华内容 218
关键字:

char占几个字节