2 cool0532 cool0532 于 2016.01.22 21:05 提问

关于char与byte类型的一些问题

首先说一下我的理解,不知道对不对,
byte 字节 8个二进制位(bit)
char类型 占用2个字节 也就是16个二进制位

那么问题来了,一个英文字母是几个字节,是根据类型来的吗???
那String str = “hello” 这是几个字节???有人能帮着解释解释吗

6个回答

caozhy
caozhy   Ds   Rxr 2016.01.22 21:08

char类型 占用2个字节 也就是16个二进制位
什么语言,C语言是一个字节。有的语言是2个。

一个英文字母是几个字节,根据编码来。比如根据ascii编码,就是一个字节,根据unicode编码就是4个字节。

cool0532
cool0532 在java中,char应该是两个字节吧,你是做java方向的吗
2 年多之前 回复
rl529014
rl529014   2016.01.22 23:32

一个字节有八个位,这是确定了的事,但是不同数据类型具体占多少位,需要是没有明确规定的,根据系统而定

caozhy
caozhy   Ds   Rxr 2016.01.22 21:10

默认情况Java有一个默认编码,但是你也可以指定,比如
new String("str","编码")
那么占用的字节就不同了。

enpterexpress
enpterexpress   Rxr 2016.01.22 22:52

数值类型byte占8个位
char字符类型根据字符集来判断一个字符占多少字节

QZC78
QZC78   2016.01.23 09:55

由于在内存中,byte是占一个字节,char是占两个字节,在一些情况下使用的时候会造成内存溢出的问题,所以会统一使用指定的编码格式进行转换,就算这个字段的存量不足,也会按照这个字段的类型匹配的字节储存运算

91program
91program   Ds   Rxr 2016.01.22 21:13

这句是不对的:char 类型 占用2个字节 也就是16个二进制位!
至少对于 C 语言来说, char 是一个字节。

对于 Unicode 版本,就不是 char,一般是 wchar_t 或者 TCHAR。这样,就是2个字节!

字符串,分为 Unicode 版本 / ASCII / UTF-8 等编码方式,各种编码方式占用的字节数是不相同的。定长编码,一般是 2 个字节;但有不定长的,需要根据实现字符而定。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Char, String 和 Byte 等类型间的转换和编码
这篇文章的标题看似简单,那就先从简单的说起。众所周知: 1、char 是字符类型; 2、string 是字符串类型; 两者都是及其常用数据类型。虽然一字之差,但是有本质区别: 1、char 在C++中是基础类型,在C#中是值类型(Value Type)。因此,一个 char 类型的对象所占用的控件总是确定的(不要认为是1个字节!Byte才是)。在 C++中,一个char变量
byte,short,char类型的运算
byte类型:-128到127 short类型:-32768到32767
Java中的byte/char/String数据类型转换
前言:项目中遇到的实际问题,Android手机和硬件通过Socket通信,手机可能会对硬件批量设置定时任务,最多批量设置16个。但由于硬件接收大量报文后处理不过来,定时任务经常漏设,而且响应相对较慢,最好能将16个报文压缩成一条,提高控制可靠性和硬件响应速度。原有的String类型的报文预留了两位“00-15”分别对硬件编号,现在将这两位String类型的数据改成2位十六进制“00-FF”设置定时任
Java中的byte[]/char[]/int/String数据类型转换
常用的编码方式有Unicode、ASCII、UTF-8、GB2312、ISO-8899-1等。采用不同的编码方式,同样的n位二进制“数字”组合代表的“字符”也会不一样。具体采用什么样的编码方式,对“字符”怎样解析,就要看编程所在的平台是什么样了。同时,为了方便,我们并不会直接用n位二进制的表示,而是用它的十六进制表示。八种基本数据类型: 数据类型 名称 长度 备注 byte 字
byte类型和char类型
byte字节类型是JAVA中最小的数据类型,它在内存中占8位,取值范围从-128到127, 赋值:byte i = 127; 注:byte型在赋值时,一旦超过127或小于-128,则会产生编译错误。 char字符类型在内存中占2个字节。表示一个字符,也可以使用A SCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从0到655 
linux 下byte,char,unsigned char的区别
在linux中,对byte的定义为无符号char,而char默认为有符号char。 #ifndef BYTE #define BYTE unsigned char #endif以下ZZ百度知道:       在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别。       首先在内存中,char
bit,byte,char,string区别与基本类型认识
bit(位):一个位就代表一个0或1(即二进制)
Java基本类型占用的字节数(char占用几个字节问题)
Java基本类型占用的字节数: 1字节: byte , boolean 2字节: short , char 4字节: int , float 8字节: long , double 注:1字节(byte)=8位(bits) 附录: 1.编码与中文: Unicode/GBK: 中文2字节 UTF-8: 中文通常3字节,在拓展B区之后的是4字节 综上,中文字符在编码中占用的字
java对byte,short,char,int,long运算时自动类型转化情况说明
大家都知道,在进行运算时,java会隐式的自动进行类型转化,那么有哪些情况会进行转化呢?总结如下: 一、算术运算符 单目运算符:+(取正)-(取负) ++(自增1) --(自减1) 1.1 +(取正)-(取负) 当操作数是byte,short,char时,会自动转化为int类型;返回结果为int。 当操作数是int,long时,不转化,原来是啥类型,还是啥类型。 1.2 ++(自增1)
byte、short、char和int的转换
从低级类型到高级类型的转换为自动类型转换,把高级数据类转赋值给低级数据类需要强制类型转换 (低)byte、short、char->int->long->float->double(高) 其中byte类型数据可以自动转换成short类型。 short类型数据和char类型数据之间相互转换只能强制类型转换,因为它们虽然内存占用相同但是表数范围不(short是-128~127,char是0~6553