java数据类型拓展

java数据类型拓展

1.整型数据拓展

在java中,整型数据一共有四个类型:按照表示的最大数的大小或所占的位数大小依次为byte,short,int,和long.

byte称为字节,是计算机处理数据的基本单位,在内存中占8个bit大小,所以byte类型能表示的数字个数是 2 8 2^8 28,表示的范围是- 2 7 2^7 27~ 2 7 2^7 27-1。

short类型占两个字节,也就是16bit大小,所以short类型能表示的数字个数是 2 16 2^{16} 216,表示的范围就是- 2 15 2^{15} 215~ 2 15 2^{15} 215-1。

int类型占4个字节,long类型占8个字节,其余就同理了。因此要注意在定义整数时,不要超过其范围

在java中,定义long类型整数时,要在值最后加上大写字母L

编程时,我们常用的是十进制整数。我们也可以在java中定义非十进制整数。常用的非十进制有2进制,8进制和十六进制。

int a = 0b11111;\\定义二进制数
int b = 0777777;\\定义8进制数
int c = 0xABCDEF\\定义16进制数,注意在16进制中,A~F依次表示10~15

2.浮点数拓展

浮点数一共有2个类型float和double,分别是4个字节和8个字节。

在定义float类型浮点数时,要在最后加上f

public static void main(String[] args)
{
    float f = 1.0f;
}

此外,在使用浮点数时,最好完全避免用它来比较大小,下面的例子就是解释。

public static void main(String[] args){
    float f = 0.1f;
    double d = 1.0/10;
    float f1 = 32423421342141242f;
    float f2 = f1+1;
    System.out.println(f==d);
    System.out.println(f1==f2);
}

输出的结果是false和true。

但其实,对d进行另外的定义可以避免出现这种情况。

double d = 1.0f/10;
double d = 1.0f/10f;

这两种定义均可。

为什么会出现这种情况,我们可以略作探讨:我们知道不论是float类型还是double类型,它们能表示的数其实都是有限的,但数的个数是无限的,例如对于任意一个区间[a,b],其中a<b,float类型和doube类型都无法表示其中所有的数。所以在计算机里浮点数其实是离散的,它只能表示在表示范围中的有限的数。float和double的区别简单而言就是精度。所以在进行比较和运算时,不免会有误差,这个误差就是舍入误差。为了使用的需要,我们能做的只是逼近它,取近似值。


3.字符类型

所有的字符本质上还是数字,每个字符都与一个数字一一对应。字符在计算机中都是通过编码表被编码成数字的。它用两个字节的存贮容量来存储字符。一个常见的编码表是Unicode。Unicode的表示范围即0~ 2 16 2^{16} 216,可至多表示65536个字符。

public stati void main(String[] args)
{
    char c1 = 'a';
    char c2 = '中';
    System.out.println(c1);
    System.out.println((int)c1);\\字符转数字
    System.out.println(c2);
    System.out.println((int)c2);
    char c3 = '\u0061';//Unicode直接表示方法
    System.out.println(c3);
}

输出结果是:a,97,中,20013,a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值