Ⅰ java中文字符所占的字节数是多少
采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。
Ⅱ 在JAVA中,中文和字母占几字节
你的定义不对,其实你分析的是没有错的,只是在定义变量的时候错了,char='A' --->> 不对,应该是:char a ='A'
char='陈' --->> 不对,应该是:char a ='陈'
因为在JAVA中,一个char是2个字节(byte),而一个中文汉字是一个字符,也是2个字节。而英文字母都是一个字节的,因此它也能保存到一个byte里,一个中文汉字却不能。
Ⅲ JAVA基本数据类型所占字节数是多少
32位系统
byte1字节
short2字节
int4字节
long8字节
char2字节(C语言中是1字节)可以存储一个汉字
float4字节
double8字节
booleanfalse/true(理论上占用1bit,1/8字节,实际处理按1byte处理)
JAVA是采用Unicode编码。每一个字节占8位。你电脑系统应该是32位系统,这样每个int就是4个字节
其中一个字节由8个二进制位组成
Java一共有8种基本数据类型(原始数据类型):
类型存储要求范围(包含)默认值包装类
整数类型
int4字节(32位)-231~231-10Integer
short2字节(16位)-215~215-10Short
long8字节(64位)-263~263-10Long
byte1字节(8位)-27~27-10Byte
浮点类型
float4字节(32位)-3.4e+38~3.4e+380.0fFloat
double8字节(64位)-1.7e+308~1.7e+3080Double
字符型
char2字节(16位)u0000~uFFFF(‘’~‘?’)‘0’Character
(0~216-1(65535))
布尔型
boolean1/8字节(1位)true,falseFALSEBoolean
(3)java一个汉字几个字节扩展阅读:
8种基本数据类型
在Java中一共有8种基本数据类型,其中有4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型。(一个字节等于8个bit)
Java中有八种基本数据类型,分别为:byte、short、int、long、float、double、char、boolean。
这八种基本类型都有对应的包装类,分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean。
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为:(byte,short,char)--int--long--float--double
注意,整数比浮点数低级。低级到高级可以自动转换。而高级到低级需要用代码强制转换,不强转会编译错误。
Ⅳ java中一个字符是几个字节字符和字节是同等的吗
Java规定了字符的内码要用UTF-16编码,一个字符是2个字节。外码字符所占字节取决于具体编码。字符和字节是不一样的。
外码编码不同,字符和字节的换算不同,几种常见的编码换算如下:
ASCII编码是单字节编码,只有英文字符,不能编码汉字。
GBK编码1个英文字符是1个字节,一个汉字是是2个字节。
UTF-8编码1个英文字符是1个字节,一个汉字是3个字节。
Unicode编码1个英文字符是2个字节,一个汉字是2个字节。
(4)java一个汉字几个字节扩展阅读:
汉字编码的困难点 汉字进入计算机,有许多困难,其原因主要有三点:
①数量庞大:一般认为,汉字总数已超过6万个(包括简化字)。虽有研究者主张规定3000多或4000字作为当代通用汉字,但仍比处理由二三十个字母组成的拼音文字要困难得多。
②字形复杂:有古体今体,繁体简体,正体异体;而且笔画相差悬殊,少的一笔,多的达36笔,简化后平均为9.8笔。
③存在大量一音多字和一字多音的现象:汉语音节416个,分声调后为1295个(根据《现代汉语词典》统计,轻声39个未计)。以1万个汉字计算,每个不带调的音节平均超过24个汉字,每个带调音节平均超过7.7个汉字。有的同音同调字多达66个。一字多音现象也很普遍。
Ⅳ java中如何计算一个字符串的byte长度(一个汉字多少字符)
中文并不一定是占两个字节的,具体占多少字节是跟具体的编码方式相关的。
比如说:GB2312、GBK、GB18030
编码是占用两个字节的,但是
UTF-8
编码的话至少需要占用三个字节。
有一个简单方法,就是把大于
0xff
的字符都作为两个字符(当然是在
GBK
环境下)
Java
code
publicstaticint
count(String
str)
{
if(str
==null||
str.length
==0)
{
return0;
}
int
count
=0;
char[]
chs
=
str.toCharArray();
for(int
i
=0;
i
<
chs.length;
i++)
{
count
+=
(chs[i]
>0xff)
?2
:
1;
}
return
count;
}
或者你直接使用
int
len
=
str.getBytes("gbk");上面代码假设你的数据库编码格式是
GBK
的,而不是
UTF-8
的,如果是
UTF-8
的话,上面的代码无效!1字节等于8比特,一个字母是1字节,而一个汉字要用2个字节。一个汉字=2个字符