Java中的八种基本数据类型boolean、char、int、short、long、float、double及注意事项

Java中的八种基本数据类型boolean、char、int、short、long、float、double及注意事项

  • Java中基本数据类型只有八种:boolean、char、int、short、long、float、double;

  • 其中六大数值类型可以按照如下顺序排序:
    byte < short < int < long < float < double

  • 基本占位范围情况表
    在这里插入图片描述

  • boolean(布尔型)

    1bit(位) 1Byte(字节) 取值范围:true、false

    • 理论上boolean类型只有true和false两种逻辑值用一个位就ok了,理由是虽然编译后1和0只需占用1位空间,但计算机处理数据的最小单位是1个字节,1个字节等于8位,实际存储的空间是:用1个字节的最低位存储,其他7位用0填补,如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。
    • Java与C、C++不同。C、C++中用0代表假,非0代表真。而java只有true和false两种取值。
  • char(字符型)

    16bit(位) 2Byte(字节) 取值范围:0 ~216-1

    • char是基本类型,但String不是。String是Java中的一个类,属于引用类型;char中只能放一个字符。char a=‘a’; //任意单个字符,加单引号。char a=‘中’;//任意单个中文字,加单引号char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。
  • byte(字节型)

8bit(位) 1Byte(字节) 取值范围:-27~27-1

  • byte:进行一些IO数据传输操作时常用到。
    注:byte字节型有8位为什么范围却只有-27~27-1? 因为byte是有正负的所以要有一位作为符号位,首位二进制作为符号位1表示负数,0表示正数
	这有一些奇怪的现象,看博的同行们可以评论一下这些现象产生的原因,谢谢!
1.		byte a=2;
		byte b=a+1;//这会报错
2.		
		char x=65;
		byte y=x;//报错,同胞们你们在数轴上画出他们两的取值范围就懂了
		short b=x;//报错
		int a=x;//不报错		
3.
		byte b1 = 10;
		byte b2 = 20;
		byte b3 = b1 +  b2;
		System.out.println(b3);  

答案:第三行编译报错,byte类型在参与运算时会被隐式地提升为int,
两个int相加结果还是int。而int类型的结果75是无法直接赋值给byte类型的变量。
  • short(短整型)

    16bit(位) 2Byte(字节) 取值范围:-215~215-1

    • short 数据类型是 16 位、有符号的以二进制补码表示的整数

    • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;

    • 默认值是 0;

    • 例子:short s = 1000,short r = -20000。

  • int(整型)

    32bit(位) 4Byte(字节) 取值范围:-231~231-1

    • int 数据类型是32位、有符号的以二进制补码表示的整数;

    • 一般地整型变量默认为 int 类型;

    • 默认值是 0 ;

    • 例子:int a = 100000, int b = -200000。

  • long(长整型)

    64bit(位) 8Byte(字节) 取值范围:-263~263-1

    • long 数据类型是 64 位、有符号的以二进制补码表示的整数;

    • 这种类型主要使用在需要比较大整数的系统上;

    • 默认值是 0L;

    • 例子: long a = 100000L,Long b = -200000L。

    • "L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。

     1.
     问:System.out.println(5 * 1000 * 1000 * 1000 / 1000);的运行
     结果和你自己运算的结果为什么有冲突。
     2.
     long l1 = 10;
     long l2 = 10l;
     而实际上l1和l2的值大小也是相等的。只不过,l1实际上是在用一个
     32位int字面量赋值。32位小于64位,所以可以兼容。而l2是真正用了一个
     64位长整型字面量值给一个64位长整型变量赋值,类型完全相同。
    
  • float (单精度浮点类型)

    32bit(位) 4Byte(字节)
    取值范围:大约:上限:3.40E38 下限:1.4E-45(表示精确度)

    • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
    • 超出部分可能会精度丢失。
      字面量后面加“f”或“F”代表float类型。
    • float 在储存大型浮点数组的时候可节省内存空间;
    • 默认值是 0.0f;
    • 浮点数不能用来表示精确的值,如货币;
    • 例子:float f1 = 234.5f。
  • double(双精度浮点类型)

    64bit(位) 8Byte(字节)
    取值范围:大约:上限:1.80E308 下限:4.9E-324(表示精确度)

    • double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
    • 浮点数的默认类型为 double 类型;
    • double类型同样不能表示精确的值,如货币;
    • 默认值是 0.0d;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值