Java中基本数据类型所占字节与取值范围

 2022-09-07
原文地址:https://blog.51cto.com/u_11966318/5370349

Java语言的数据类型分为两种,一种是简单数据类型,另外一种是引用数据类型。

① 字节长度和取值范围

简单数据类型都有固定字节长度与取值范围,具体如下表所示:

类型 字节 最小值 最大值 默认值
类型 字节 最小值 最大值 默认值
boolean 1bit false true false
byte 1 -128(-2^7) 127(2^7-1) 0
short 2 -32768(-2^15) 32767(2^15-1) 0
int 4 -2,147,483,648(-2^31) 2,147,483,647(2^31-1) 0
long 8 -9,223,372,036,854,775,808(-2^63) 9,223,372,036,854,775,807(2^63-1) 0L
float 4 1.4E-45 3.4028235E38 0.0f
double 8 4.9E-324 1.7976931348623157E308 0.0d
char 2 \u0000(0) \uffff(65535) 0

除了8种简单数据类型之外的所有数据类型都被称为引用数据类型,引用数据类型变量的内存大小统一为4字节,记录的是其引用对象的地址。


② 基本数据类型转换

也可以理解为数值类型提升:

    byte->short ,
     char -> int -> long ,
     float -> double
     int -> float
     long -> double

③ 基本数据类型对应的封装类

简单类型和封装类型直接的对应关系如下表所示:

基本类型 封装类型
基本类型 封装类型
byte Byte
short Short
int Integer
long Long
boolean Boolean
float Float
double Double
char Character

java中加入了自动装箱拆箱操作,这样就可以使用对应的方法。


④ char使用详解

  • char赋值

char a=‘a’; //任意单个字符,加单引号。

char a=‘中’;//任意单个中文字,加单引号。

char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。

注:只能放单个字符。

  • char运算

char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值。

在JAVA中,对char类型字符运行时,直接当做ASCII表对应的整数来对待。

示例:

char m=‘a’;  ——a。

char m=‘a’+‘b’;  ——Ã。 //char类型相加,提升为int类型,输出对应的字符。

int m=‘a’+‘b’;   ——195。//195没有超出int范围,直接输出195。

char m=‘a’+b;  ——报错。//因为b是一个赋值的变量。

char m=197;  ——Ã。 //输出字符编码表中对应的字符。

char m='197;  ——报错。//因为有单引号,表示是字符,只允许放单个字符。

char m=‘a’+1;  ——b。//提升为int,计算结果98对应的字符是b。

char m=‘中’+‘国’;  ——42282。

char m=‘中’+‘国’+‘国’+‘国’;  ——报错。int转char有损失。因为结果已经超出char类型的范围。

int m=‘中’+‘国’+‘国’+‘国’;  ——86820

char m=‘中’+1;  ——丮。//1是int,结果提升为int,输出对应的字符。

char m=‘中’+“国”;  ——报错。String无法转换为char。

System.out.println(‘中’+“国”);  ——中国。//没有变量附值的过程。String与任何字符用“+”相连,转换为String。

总结:

  • 用单引号’'标识,只能放单个字符。
  • char+char,char+int——类型均提升为int,赋值char变量后,输出字符编码表中对应的字符。

参考博文:

中文与Unicode转换;
彻底弄懂Unicode