JAVA基本数据类型
Java中有8种基本数据类型可以分为三大类
一、字符型
char
二、布尔型
boolean
三、数值型
1.整型:byte、short、int、long
2.浮点型:float、double
注:String不是基本数据类型,是引用类型。
char
char类型是可以运算的因为char在ASCII等字符编码表中有对应的数值
在Java中,对char类型字符运行时,直接当做ASCII表对应的整数来对待
用单引号''标识,只能放单个字符
char + char,char + int——类型均提升为int,附值char变量后,输出字符编码表中对应的字符
public static void main(String[] args) {
char m = 'a';
char m1 = 'a' + 'b';//char类型相加,提升为int类型,输出对应的字符。
int m2 = 'a' + 'b';//结果是195。//195没有超出int范围,直接输出195。
char m3 = 'a' + m1;//会报错。//因为b是一个赋值的变量。
char m4 = 197;//输出字符编码表中对应的字符。
char m5 = '197';//会报错。//因为有单引号,表示是字符,只允许放单个字符。
char m6 = 'a' + 1;//输出结果是b。//提升为int,计算结果98对应的字符是b。
}
boolean
使用1个bit理由是boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的存储单位。
布尔类型:布尔数据类型只有两个可能的值:真和假。使用此数据类型为跟踪真/假条件的简单标记。这种数据类型就表示这一点信息,但是它的“大小”并不是精确定义的。
boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是运算效率和存储空间之间的博弈,两者都非常的重要。
byte、short、int、long的取值范围
Java中的整型主要包含byte、short、int和long这四种,表示的数字范围也是不同的,之所以表示范围不同主要原因是因为他们存储数据时所占的字节数的多少有关。
因为1字节=8位(bit)。
java中的整型属于有符号数、即表示正负。
先来看计算中8bit可以表示的数字: 最小值:(-128)(-2^7) 最大值:(127)(2^7-1)
整型的这几个类型中,
byte:byte用1个字节来存储,范围为-128(-2^7)到127(2^7-1),byte类型的默认值为0。
short:short用2个字节存储,范围为-32,768 (-2^15)到32,767 (2^15-1),short类型的默认值为0。
int:int用4个字节存储,范围为-2,147,483,648 (-2^31)到2,147,483,647 (2^31-1),int类型的默认值为0。
long:long用8个字节存储,范围为-9,223,372,036,854,775,808 (-2^63)到9,223,372,036, 854,775,807 (2^63-1),long类型的默认值为0L或0l,也可直接写为0。
public static void main(String[] args) {
int minValue = Integer.MIN_VALUE;
int maxValue = Integer.MAX_VALUE;
System.out.println("minValue (" + minValue + ") + maxValue (" + maxValue + ")");
byte maxValue1=Byte.MIN_VALUE;
byte minValue1=Byte.MAX_VALUE;
System.out.println("minValue (" + minValue1 + ") + maxValue1 (" + maxValue1+")");
long long1=Long.MIN_VALUE;
long long2=Long.MAX_VALUE;
System.out.println("long1 (" + long1 + ") + long2 (" + long2+")");
short short1=Short.MIN_VALUE;
short short2=Short.MAX_VALUE;
System.out.println("short1 (" + short1 + ") + short2 (" + short2+")");
}
输出结果:
minValue (-2147483648) + maxValue (2147483647)
minValue (127) + maxValue1 (-128)
long1 (-9223372036854775808) + long2 (9223372036854775807)
short1 (-32768) + short2 (32767)
浮点型
首先明确java中浮点型数据类型主要有:单精度float、双精度double
浮点数和小数并不是完全一样的,计算机中小数的表示法,其实有定点和浮点两种。因为在位数相同的情况下,定点数的表示范围要比浮点数小。所以在计算机科学中,使用浮点数来表示实数的近似值。
单精度浮点数(float)
单精度浮点数在机内占4个字节、有效数字32(bit)位
在Java语言当中,所有的浮点型字面值默认当做double类型来处理,要想该字面值当做float类型来处理,需要在字面值后面添加F/f,或者强制装换为float
public static void main(String[] args) {
//3.14是浮点型,浮点型字面值默认当做double类型来处理,直接编译通过;
double a=3.14;
//3.14是浮点型,则必须加 F或者f,若没加,直接编译不通过,会报错“精度损失”
float b=3.14;
//解决办法:
//第一种方式:强制类型转换
float c=(float)3.14;
//第二种方式:没有类型转换,直接在值后面加f或者F;
float d=3.14F;
}
双精度浮点数(double)
双精度浮点数在机内占8个字节、有效数字64(bit)位。double的精度太低,不适合用于涉及到钱的问题,要求精度较高,使用double或者是float的会被祭天的。所以在java中有一个基础的类库名为:java.math.BigDecimal,但这个BigDecimal类型是引用类型不是基础类型。
最后附一个数据的取值范围表
- 点赞
- 收藏
- 关注作者
评论(0)