java怎么看不到数据类型源码_Java jdk源码 0814 基本数据类型

时隔多月,我又开始看jdk源码了。上次看完了String 类型,现在去看下基本数据类型。

8种数据类型分别为

整型 byte short int long

浮点型 double float

逻辑型 boolean

字符型 char

static boolean bool;

static byte by;

static char ch;

static double d;

static float f;

static int i;

static long l;

static short sh;

static String str;

public void contextLoads() {

System.out.println("查看基本数据类型的结构");

// byte

System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);

System.out.println("包装类:java.lang.Byte");

System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);

System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);

System.out.println("默认值为:" + by);

System.out.println();

// short

System.out.println("基本类型:short 二进制位数:" + Short.SIZE);

System.out.println("包装类:java.lang.Short");

System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);

System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);

System.out.println("默认值为:" + sh);

System.out.println();

// int

System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);

System.out.println("包装类:java.lang.Integer");

System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);

System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);

System.out.println("默认值为:" + i);

System.out.println();

// long

System.out.println("基本类型:long 二进制位数:" + Long.SIZE);

System.out.println("包装类:java.lang.Long");

System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);

System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);

System.out.println("默认值为:" + l);

System.out.println();

// float

System.out.println("基本类型:float 二进制位数:" + Float.SIZE);

System.out.println("包装类:java.lang.Float");

System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);

System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);

System.out.println("默认值为:" + f);

System.out.println();

// double

System.out.println("基本类型:double 二进制位数:" + Double.SIZE);

System.out.println("包装类:java.lang.Double");

System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);

System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);

System.out.println("默认值为:" + d);

System.out.println();

// char

System.out.println("基本类型:char 二进制位数:" + Character.SIZE);

System.out.println("包装类:java.lang.Character");

// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台

System.out.println("最小值:Character.MIN_VALUE="

+ (int) Character.MIN_VALUE);

// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台

System.out.println("最大值:Character.MAX_VALUE="

+ (int) Character.MAX_VALUE);

System.out.println("默认值为:" + ch);

}

根据以上程序可以看到不同的基本类型 对应的含义及 二进制位数的不同

最大值为 2^(二进制位数-1) 最小值为 2^(二进制位数-1) -1 默认值数值类型都为0 boolean类型为false char类型为‘’ 空字符串

基本类型 都含有一个包装类型 此类型会自动拆装箱转换 包装类型默认值都是null

从数据类型源码中可以看到 都 extends 了Number 实现了不同转换值的方法

此外 根据Integer 类型源码中 highestOneBit() lowestOneBit() 实现方案都是使用二进制进行位计算

public static int highestOneBit(int i) {

// HD, Figure 3-1

i |= (i >> 1);

i |= (i >> 2);

i |= (i >> 4);

i |= (i >> 8);

i |= (i >> 16);

return i - (i >>> 1);

}

public static int lowestOneBit(int i) {

// HD, Section 2-1

return i & -i;

}

获取最低位计算使用了 & 计算当前数据与相反数的位计算。 lowestOneBit()暂时不清楚内部运算方法

//long 源码中计算字符串位数的方法

// Requires positive x

static int stringSize(long x) {

long p = 10;

for (int i=1; i<19; i++) {

if (x < p)

return i;

p = 10*p;

}

return 19;

}

源码中有很多方法思想都值得学习,上面这个计算位数的方法,传入的变量是要计算的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值