Java基本数据类型

Java基本数据类型

1、Java数据类型

Java数据类型

2、Java基本数据类型所占位数、最小值、最大值

public class BasicDataTypeTest {
    public static void main(String[] args) {
        //byte
        System.out.println(Byte.SIZE);//8位
        System.out.println(Byte.MIN_VALUE);//-128
        System.out.println(Byte.MAX_VALUE);//127
        System.out.println(Byte.BYTES);//1字节
        //short
        System.out.println(Short.SIZE);//16
        System.out.println(Short.MIN_VALUE);//-32768
        System.out.println(Short.MAX_VALUE);//32767
        //char
        System.out.println(Character.SIZE);//16
        System.out.println((int)Character.MIN_VALUE);//0
        System.out.println((int)Character.MAX_VALUE);//65535
        //int
        System.out.println(Integer.SIZE);//32
        System.out.println(Integer.MAX_VALUE);//2147483647
        System.out.println(Integer.MIN_VALUE);//-2147483648
        //long
        System.out.println(Long.SIZE);//64
        System.out.println(Long.MAX_VALUE);//9223372036854775807
        System.out.println(Long.MIN_VALUE);//-9223372036854775808
        //float
        System.out.println(Float.SIZE);//32
        System.out.println(Float.MAX_VALUE);//3.4028235E38
        System.out.println(Float.MIN_VALUE);//1.4E-45
        //double
        System.out.println(Double.SIZE);//64
        System.out.println(Double.MIN_VALUE);//4.9E-324
        System.out.println(Double.MAX_VALUE);//1.7976931348623157E308
        //boolean 占1位,只有两个值,true和false,默认值是false
    }
}

3、基本数据类型取值范围计算

3.1、整型

byte示例:

最高位为符号位
byte最大值:

01111111
2^0+2^1+2^2+2^3+2^4+2^5+2^6+0*(-1)*(2^7)=127

byte最小值:

10000000
1*(-1)*2^7=-128

其他整型的取值范围的计算方式同理。

3.2、浮点型

float示例:

float32位,最高位是符号位,中间8位是阶位,最后的23位是小数位。

float最大值:

最高位符号位0表示正数。阶码1111 1110才表示最大,全是1的时候是特殊值,阶码E=e+127=254,所以指数e=E-127=127。小数位23个1 。

所以最大值表示为:(1.1……1)2 x(2^127)10

其中前面是二进制,小数点后面有23个1,转化成10进制为 2-2(-23),所以最后的10进制值是(2-2(-23))x 2^127。

其他的就不计算了,关于浮点数的表示方法,详情参见IEEE754标准。

4、基本数据类型的类型转化

byte→short→char→int→long→float→double

他们所能表示的范围依次递增,其中boolean无法转化成其他7个基本数据类型。虽然double和long都是64位,但是当long转化成double时可能存在精度丢失问题。因为整型和浮点型在存储时表示方式不一样,浮点型表示的值在某些范围里是跳跃的。当我们要进行的小数的计算时,常用的是BigDecimal而不是float和double。

从位数较少的基本数据类型转化成位数较大的基本数据类型的时候,自动隐式转化。反之,强制转化,有精度丢失,数据溢出的风险。

4.1、强制转化

public class TypeCastTest {
    public static void main(String[] args) {
       //大转小,存在精度丢失或者数据溢出风险
        System.out.println((byte)128);//-128
        System.out.println((byte)256);//0
    }
}

4.2、自动隐式转化

public class TypeCastTest {
    public static void main(String[] args) {
        //在运算的时候,会自动隐式向表达式中精度最高的类型转化。
        //如果这些数据类型是byte,short,char,会直接转化成int
        byte b = 1;
        int i = 128;
        System.out.println(i+b);//129
        //表达式中的整数,默认式int类型。
        //如果这个整数的大小超过了int类型的范围,就会报错。
        //此时在整数之后添加L表示其为long类型,L大小写均可。
        long l=99999999999999999L;
        System.out.println(i+b+l);//100000000000000128
        
        //char到int的转化是自动隐式转化
        char c = '1';
        //char转化成int,对应的是ASCII码表
        System.out.println(i+c);//177
        i = c;
        System.out.println(i);//49

        double d = 12.77;
        //小数默认式double类型,如果是float类型,需要在小数之后加上f,f大小写均可
        float f = 1.1F;
        System.out.println(i+b+l+f+d);//9.999999843067496E16

        //long类型转化成double可能存在精度丢失
        double dl=l;
        System.out.println(dl);//1.0E17
        double dls= Double.valueOf(String.valueOf(l)).doubleValue();
        System.out.println(dls);//1.0E17   依旧精度丢失
    }
}

5、基本数据类型比较是否相等

直接用 == 判断

public class CompareTest {
    public static void main(String[] args) {
        int i1 = 1;
        int i2 = 1;
        System.out.println(i1==i2);//true
        System.out.println(i1==1);//true
        byte b1 = 1;
        System.out.println(i1==b1);//true
        char c= '1';
        System.out.println(i1==c);//false
    }
}

boolean值一般用在条件判断中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值