char和byte是一个意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char和byte是一个意思?相关的知识,希望对你有一定的参考价值。
差别在哪里
用法差别在哪里
大家回答的详细点呀。。100分哦。。。
char和byte这两种数据类型容易相互混淆,他们的区别主要如下:
1、数据类型不同
byte 是字节数据类型 ,是有符号型的,可以表示-128—127 的数;
char 是字符数据类型 ,是无符号型的,可以表示一个整数,不能表示负数。
用法举例:
char i = 85;//U对应ASCII是85
byte d3 = 127; // 如果是byte d3 = 128;会报错
byte d4 = -128; // 如果是byte d4 = -129;会报错
2、占用空间大小和大小范围不同
byte占1 个字节;大小范围为-128—127 ;
char占2字节(Unicode码 );大小范围 是0—65535 ;char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符 。
3、另外char可以表示中文字符,byte不可以。用法举例:
char e1 = '中', e2 = '国';
byte f= (byte) '中'; //必须强制转换否则报错
参考资料:百度百科-char
参考资料:百度百科-byte
byte 是字节型(0 - 255)
在参与算术运算是char类型会自动转为整型;如字符A会转为对应ASCII码65.
char是用来表示一个字符,而不是一个字,因为一个字要占用两个字节。而存储一个ANSI字符只需一个字节。注意,强调是ANSI字符,而不是Unicode字符。因为Unicode要占用两个字节。
byte类型是最自由的一种。它就占用一个字节,但没有定义这个字节拿来干什么。char定义为一个Unsigned Byte类型。也就是无符号的一个字节。它将一个字节的8位全占用了。可以表示的数据范围是0到255之间。
如果你确定处理的字符串是标准的ANSI字符串,那不必转换也可以直接一个字节一个字节地处理。如果要处理的字符串不定或是统一的Unicode字符串则要进行转换后进行处理。本回答被提问者采纳 参考技术B 不是一个意思,虽然它们都是一个字节,但char是有符号的,byte是无符号的,byte类型的本质是unsigned char
char一般用于处理字符,byte一般用于处理数据,但都很少单独使用,一般char数组来处理字符串,byte数组用来处理数据 参考技术C char分为signed char和unsigned char
在C语言中,byte等于unsigned char.
signed char代表的是有符号的字符型,对应整数-128~+127,而unsigned char代表的是无符号的字符型,对应的整数范围为0~255. 参考技术D byte在java中才有的
char型是字符型,占2个字节,默认数值'\u0000',取值范围'\u0000'~'\uffff'
byte是字节型,占1个字节,默认数值0,取值范围-128~127
byte是属于整数型的,其他整数型还有short(短整型)int(整形),long(长整型)
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个字节。
以上是关于char和byte是一个意思?的主要内容,如果未能解决你的问题,请参考以下文章
c语言byte类型 typedef unsigned char byte[20]; 如何初始化