java基础-基本数据类型

基本数据类型有8种分别为:

整    形:byte(1bit),short (2bit),int (4bit),long (8bit,在JDK32位的时候长度为4bit)

浮点型:float(4bit),double(8bit)

字符型:char(2bit)

布尔型:boolean (1bit)

 

整数

1bit有8位其中第1位用来记录正负数(0代表正数,1代表负数),这样就出现0和-0,-0被划分到负数数所以正数比负数少一位。

所以公式为:-2^(字节数*8-1) ~ 2^(字节数*8-1)-1

1bit 的公式为 -2^7~2^7-1,取值范围为 -128~127

2bit 的公式为 -2^15~2^15-1,取值范围为 -32768~32767

4bit 的公式为 -2^31~2^31-1,取值范围为 -2147483648~2147483647

8bit 的公式为 -2^63~2^63-1,取值范围为 -922337203684775808 ~ -922337203684775807

 

浮点

float 和 double内存中是按IEEE754存储的,所以比long都要大。

float:1bit(符号位) 8bits(指数位) 23bits(尾数位),2^-149~2^128-1

double:1bit(符号位) 11bits(指数位) 52bits(尾数位),2^-1074~2^1024-1

 

字符

char取值范围 Unicode '\u0000' ~ '\uFFFF',由于1bit只有256大小无法满足中文存储所以char为2bit

 

布尔类型

boolean取值范围 false 和 true,不能强制类型转换

 

强制类型转换,大bit转小bit会把字节砍掉可能导致为负数

public class Test1 {
    public static void main(String[] args) {
        float f = 1.1F;
        int a = (int) f;
        System.out.println(a);

        byte b = 100;
        a = b;
        System.out.println(a);

        a = 1000; // 如果int转换成byte会把前面的字节砍掉字节 1111101000 -> 11101000
        b = (byte) a;
        System.out.println(b);

        char c = '浪';
        System.out.println((int) c);

        char c2 = 28010;
        System.out.println(c2);
    }
}
// 结果
1
100
-24

 

基本数据类型还有对应的封装类:Byte、Short、Integer、Long、Float、Double、Character、Boolean

Integer对int基本数据类型进行了封装,提供了一系列的方法。

Integer a = 127;  // 实际上编译器会将127转化成Integer.valueOf(127)
Integer i = Integer.valueOf(127);
Integer i2 = new Integer(127);
Integer a2 = 127;
System.out.println(a == i);
System.out.println(a == i2);
System.out.println(a == a2);  // 如果与基本类型比较,编译器会将a转化成a.intValue()
结果:
true
false
// 值得注意的是valueOf方法对-128~127做了缓存,直接返回cache数组的常量,而其它Byte、Short、Long也做了相应的处理
public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值