前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java,bit比特,byte字节,char字符,short,int,long,float,double,string,字母,汉字/编码等

Java,bit比特,byte字节,char字符,short,int,long,float,double,string,字母,汉字/编码等

作者头像
Fisherman渔夫
发布2020-02-19 11:34:00
1.6K0
发布2020-02-19 11:34:00
举报
文章被收录于专栏:渔夫渔夫

如题,做个重新认识的总结,只供参考,如果不准确的,请回复,谢谢

数据类型

比特位(bits)

表示范围

有无符号

bit

1

0~1

byte

8

-128~127

short

16

-32,768~32,767

char

16

‘\u0000’~’\uffff’ 共有65535个字符表示

int

32

-232~232 -1

long

64

-264~264-1

float

32

单精度浮点型。这里讨论没多大意义,但是要知道其值不能用于精确计算。

double

64

双精度浮点型

参考网址的话,直接上Oracle的官方文档就好: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 汉字:1 汉字 = 2 byte = 16 bit

《《这里不是很准确,当编码不同的时候,1个汉字所占的字节数也会有所不同,有些编码是占 2个字节,有些则不是,可能是 3个或者 4个》》

首先认识下Java中的数据类型: 1、Int整型:byte(8位,-128~127)、short(16位)、int(32位)、long(64位) 2、Float型:float(32位)、double(64位) 3、char字符:unicode字符(16位)

下面参考了这篇文章:

char与byte的区别:http://blog.csdn.net/luoweifu/article/details/7770588

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

char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535;

char是一个16位二进制的Unicode字符,JAVA用char来表示一个字符

1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:

代码语言:javascript
复制
char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别
System.out.println(c); //?
byte d1 = 1;
byte d2 = -1;
byte d3 = 127; // 如果是byte d3 = 128;会报错
byte d4 = -128; // 如果是byte d4 = -129;会报错
System.out.println(d1); //1
System.out.println(d2); //-1
System.out.println(d3); //127
System.out.println(d4); //-128

2、char可以表中文字符,byte不可以,如:

代码语言:javascript
复制
char e1 = '中', e2 = '国';
byte f= (byte) '中';	//必须强制转换否则报错
System.out.println(e1); //中
System.out.println(e2); //国
System.out.println(f); //输出是45,这时已经不是能完全代表汉字中了,是把 中 这个字低位字节赋值给f了
System.out.println((char)f); //输出是 -,可以看到把汉字 中 转到 f byte,在从 f转回 char型,已经丢失了高位字节

3、char、byte、int对于英文字符,可以相互转化,如: 不过需要注意的是转换过程中涉及高位不零,利益高位被过滤掉的情况。

代码语言:javascript
复制
byte g = 'b';	//b对应ASCII是98
char h = (char) g;
char i = 85;	//U对应ASCII是85
int j = 'h';	//h对应ASCII是104
System.out.println(g); //98
System.out.println(h); //b
System.out.println(i); //U
System.out.println(j); //104

补充一个有意思的问题: 我们什么时候使用int/short类型的数据:

  1. 我们在处理文件数据/网络连接中的原始数据时,通常需要使用byte[]数据类型;
  2. short和short[]类型通常和GUI和图像处理/声音处理阶段,特别时嵌入式相关的开发和此类型也有关系;

参考网址: https://stackoverflow.com/questions/1539793/in-java-does-anyone-use-short-or-byte

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档