char 和 byte 区别

byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。

char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。

1,char可以表示中文字符,byte不可以;

2,char可以表示一个整数,但不能带符号,只能是正数,范围是0-65535;byte有符号型整数,范围是-128-127;

3,char对于英文字符可以直接转换(按Unicode码) 例如 :char c = 65;  System.out.println(c); 结果为A

注意:char c =‘A‘  ,变量中实际存储的是该字符的Unicode编码

题外话:

示例: 下面的程序计算了一个循环的迭代次数,并且在该循环终止时将这个计数值打印了出来。那么,它打印的是什么呢?

public static void main(String[] args) {
		byte bytes[] = new byte[256];
		for (int i = 0; i < 256; i++)
		bytes[i] = (byte)i;
		String str = null;
		str = new String(bytes);
		for (int i = 0, n = str.length(); i < n; i++)
		System.out.println((int)str.charAt(i) + " ");
	}

  

byte数值通过String构造器被转换成char数值,最后char数值被转型成int数值被打印出来.

因为char是无符号的,所以byte的负值转成 char型是一个非数值型的特定字符.String构造器在未指定字符集的时候,采用jre的缺省字符集. 在通过解码使用平台缺省字符集的指定byte数组来构造一个新string 时,该新string 的长度是字符集的一个函数,因此,它可能不等于byte数组的长度.当给定的所有字节在缺省字符集中并非全部有效时,这个构造器是不确定的.

只有"ISO-8859-1"能让该程序按顺序打印0-255,此处应显示的指定字符集.str = new String(bytes,"ISO-8859-1");

时间: 2024-08-06 11:38:14

char 和 byte 区别的相关文章

char与byte的区别

很多初学者(包括我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享: byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128—127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0—65535 :char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 . 下面用实例来比较一下二者的

char 与byte的区别

很多初学者(包括我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享: byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128-127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0-65535 :char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 . 下面用实例来比较一下二者的

java基础类型中的char和byte的辨析及Unicode编码和UTF-8的区别

在平常工作中使用到char和byte的场景不多,但是如果项目中使用到IO流操作时,则必定会涉及到这两个类型,下面让我们一起来回顾一下这两个类型吧. char和byte的对比 byte byte 字节,数据存储容量1byte,byte作为基本数据类型表示的也是一个存储范围上的概念,有别于int.long等专门存数字的类型,这种类型的大小就是1byte,而int是4byte. 存数字的话就是1byte=8位,2^8=256 即-128-127.字符的话包括字母和汉字,一个字母是1byte,一个汉字2

char 与 unsigned char的本质区别

在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别. 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高位为符号位,因此char能表示-127~127,unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字. 在实际使用过程种有什么区别呢?主要是符号位,但是在普通的赋值,读写文

C语言char s[] 和 char *s的区别

C语言char s[] 和 char *s的区别,下面这个回答讲解的很清晰. The difference here is that char *s = "Hello world"; will place Hello world in the read-only parts of the memory and making s a pointer to that, making any writing operation on this memory illegal. While do

C# byte[]与char[]、string与char[]、byte[] 与 string 互转

1. byte array -> char array Byte[] b=new byte[5]{0x01,0x02,0x03,0x04,0x05}; Char[] c=Encoding.ASCII.GetChars(b); 2. char array -> byte array Char[] c=new char[5]{a,b,c,d,e}; Byte[] b=Encoding.Default.GetBytes(c); Char[] c=new char[5]{a,b,c,d,e}; Byt

const char* &amp;p 和 char* const &amp;p 区别

const char* &p 和 char* const &p 两种引用: 两者都是对一个对象的引用. 但是前者的"这个对象"是 const char*,一个指向 const char 的指针,注意!虽 然这个指针指向的char不可以改变,但这个指针本身的值是可以改变的,也就是说, 他可以被改变而指向另一个 const char 对象. 后者的"这个对象"则是char*, 一个指向char的指针.这个指针指向的东西是可以 改变的,但是这个指针本身是不

基本类型数据转换(int,char,byte)

public class DataUtil { public static void main(String[] args) { int a = 8; int value = charToInt(byteToChar(intToByte(a))); int value2 = byteToInt(charToByte(intTochar(a))); System.out.println(value); System.out.println(value2); } public static byte

char与byte的差别

非常多刚開始学习的人(包含我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比較,先将结果与大家分享: byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128-127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0-65535 :char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 . 以下用实例来比較