Java中整数型与浮点数等数据类型的使用细节

本文详细介绍了Java中的基本数据类型,包括整数型、浮点型、字符型和布尔型的特点及使用注意事项,如整数型中long类型的取值范围比int大,float类型赋值时需注意精度损失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类型字符数
byte1字节
char2字节
short2字节
int4字节
float4字节
long8字节
double8字节
boolean至少1字节

整数型

首先Java中默认的整数型为int数据类型,其取值范围为2^31-1——-2^31,而其中long类型的取值范围为2^63-1——-2^63,如果运行以下一段程序,会出现值损失的情况,是因为long表示的数据范围大于int可表示的数据范围,int的类型值存储不了long类型的值。


public class Test {
    public static void main(String [] args){
        int a=1;
        long b=2;
        a=b;
        System.out.println(a);
    }
}

但是对于byte类型或者short类型的数据赋值给int类型,则其最终的类型为自动升级为更加高级的int类型

浮点型

浮点数=符号位+指数位+尾数位(尾数部分可能会包括不了全部的尾数,会造成精度损失,小数都是近似值),在浮点型中分为double型与float类型,而Java默认的使用double类型,如果想要使用float类型,必须在数的最后加上f,表示这是一个单精度浮点数,否则会发生值损失错误。运行以下程序,会发生信息报错。而如果在10.2后面加上f,则不会报错。


public class Test {
    /**这是算出函数类型的数据*/
    public static String getType(Object o){
        return o.getClass().toString();
    }
    public static void main(String [] args){
        float a=10.2;
        System.out.println(a);
    }
}

 这是因为不加上f,表示double型的数据10.2赋值给float类型的a,由大转小会损失,而加上f之后,就是将float类型赋值给float类型,不会发生值损失。

浮点型科学计数法的表示,例如int a=5.12e2,表示5.12*(10^2)=512


public class Test {
    /**这是算出函数类型的数据*/
    public static String getType(Object o){
        return o.getClass().toString();
    }
    public static void main(String [] args){
        double a=5.12e2;
        System.out.println(a);
    }
}

 浮点型使用中常见的陷阱问题,从数学的角度来看,a与b应该完全相等的,但是计算机算出并不是相等,是因为计算机并不快速识别出8.1后面是否还有其他数值,所以计算机选择进行无限接近算出结果。所以并不建议用浮点型除法进行大小比较运算,如果真的要进行比较,通常在计算机中在某个精度范围内进行比较,不超过某个精度,即认为其相等


public class Test {
    public static void main(String [] args){
        double a=8.1/3;
        double b=2.7;
        System.out.println(a!=b?"a与b不相等":"a与b不想等");
        System.out.println(a);
        System.out.println(b);
    }
}

字符类型

用单引号引出,并且其中只能包含一个字符,而对应的转义字符也表示一个字符,占据一个符号位,即char类型如果包含转义字符,就不能包含其他字符了。


public class Test {
    public static void main(String [] args){
       char a='哈';
       char b='\t';
        System.out.println(a);
        System.out.println(b);
    }
}

在Java中char的本质是一个整数,在输出时,是unicode对应的字符,例如a对应的字符编码为97,张的Unicode的对应的编码为24352,运行以下程序


public class Test {
    public static void main(String [] args){
       char a=97;
       char b='a';
       char c='张';
        System.out.println(a);
        //这里由于b的类型为char,输出响应的转义字符时需要进行强制类型转换
        System.out.println((int)b);
        System.out.println((int)c);
    }
}

 布尔类型

布尔类型取值只允许取值为true与false,而且仅仅只占有一个字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值