Java基础----数据类型

本文详细介绍了Java中的基本数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。讲解了各类型取值范围、内存占用以及转换规则,并通过实例说明了整型和浮点型的赋值与精度问题。同时,提到了字符型的表示方式以及布尔型的真假表示。最后,强调了不同类型之间的赋值需要注意的细节,如精度损失和类型转换的必要性。

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

以下代码皆在eclipse内进行操作

基本数据类型

1.整型

概念:就是存储整数的数据类型.整型数据类型根据占用的内存空间位数不同分为四种:

byte(字节),short(短整型),int(整型),long(长整型) .

       类型 占位   字节     取值范围        整数范围
byte字节类型 8位1个字节  -2^7 ~ 2^7-1      -128 ~ 127
 short短整型16位2个字节-2^15 ~ 2^15-1 -32768 ~ 32767
     int整型32位4个字节-2^31 ~ 2^31-1     大约21个亿
 long长整型64位6个字节-2^63 ~ 2^63-1

取值范围减一的原因:最高位是符号位,最高位为0表示正数,最高位为1表示负数.

以byte为例:用二进制表示,最小值表示:1000_0000,最大值表示:0111_1111.

负整数转换的方式:

                      1.先取反

                      2.再加一

例子:

       原数据:1100_0000

       取反后:0011_1111

       加一后:0100_0000

       转十进制:64

       最高位为0是正数,无需添加符号.

使用四种数据类型:

 发现在第21行报错,如果想要解决这个错误则需要在这个数据后加一个l或者L.

 为什么需要通过添加l或者L就可以解决错误呢,明明所输入的数据根本没有超过long类型的数据范围.

事实上,在Java 中,如果传入的数据时整数,那么系统将会默认其为int类型,所以在第一张图片里,第二十一行的数据被系统识别成了int类型,此时数据超过了int的取值范围,所以报错,故添加l和L就是为了告诉系统:"我现在是long不是int,不要搞错啦!"

*整型的注意事项(我们老师上课说的,从老师那拿来用的)

1)整数的字面量(直接量)默认为int类型,如:22,123;(字面量不可变)

2)如果字面量在较小的范围内,可以直接为小类型赋值;

byte b = 10;//10虽然为int类型,但是在byte的范围内

byte c = 128//编译失败,128超出byte的范围

思考:以下代码能否编译通过

 1.     int a = 1;

 2.     byte b = a;

 思考题答案:不行;

理由:程序在编译时由上至下一个个执行,在第一行时系统已经明确了a就是int,然后在第二行时系统就会想,a是int,b是byte,a的数据范围比b大,你要我把大的变成小的,我又不傻,我才不这么干,然后就报错了,它不会想其实我的a只有1,是在byte范围里的,至于byte b = 10为什么,因为程序执行到这一行代码时,系统就等同于是直接见到了10这个数据,中间没有经过int a这种想要赚差价的中间商,就很自然地想到我的10是在byte范围内的,不会存在亏了这个问题,所以此时就通过啦.

即使它有默认成int类型的这种功能,但没有你自己来强调它是int来的强烈.而且你不能每次都确定int a的大小是在byte范围内的

总结:没有中间商(int a),程序好,我也好.

3)Java中,字面量如果使用0开头表示8进制,0B/0b开头表示十六进制.

二进制:只能用0或1来表示,不能超过1,如int a = 0b1100_0000;

八进制:0到7,如int b = 0300;

十六进制:0到9 a到f/A到F(表示10到15),如int c = 0xc00;

十进制: 0到9,如int d = 110;

2.浮点型变量

               类型名大小/位                       精度说明
   float(单精度浮点类型)    32符号位1位,指数位8位,尾数位23位
 double(双精度浮点类型)    64符号位1位,指数位11位,尾数位52位

关于指数位与尾数位: 

采用科学计数法:

用十进制举例: 123456 = 1.23456*10^5  尾数:23456,指数:5,基数:10

 用二进制举例: 10111 = 1.0111*2^100  尾数:0111,指数:100,基数:2

尾数来决定精度.

使用数据类型:

 发现在第24行报错,有了上面的long的铺垫,我相信读者们应该也有自己的猜想了,事实上,这里只需要在12.54678后加一个f或者F就行啦.

原因:在Java中,如果传入的数据是小数类型,那么将会将其默认为double类型,如果不添加f或F的话,在第一张图的第24行就等同于将double类型的值直接付给float类型,但是double的精度比float高,所以系统会再一次想到自己亏了,所以会报错.它这个就和整型里不同了,整型里这么写没问题,但浮点型绝对不行,你可以这么想,在浮点型里它对于默认为double这个规则执行的非常严格.

虽然默认是double类型,但是你写double d1 = 1.2和写double d2 = 1.2d (写d和D都可以)都是对的,但没必要去加个d或D.

*对于int,long,float,double精度从小到大的顺序为:

                           float < int < double < long

原因:观察它们四个的精度位,int和long除了最高位为符号位外,其他的都是精度位,所以int的精度位为31,long的精度位为63,而对于浮点型而言,它们的精度是由尾数位来掌控的,所以float的精度位为23,而double的精度位为52,故排序大小为:  float < int < double < long.

*浮点型注意事项

1)浮点型对于超出精度范围的数据可以进行四舍五入,可以将int类型赋值给float类型,但精度会丢失.

 由上面两张图可以看出i3 = i2 - 1,但是最后分别赋值给f3和f4时,得到的结果是一样的,由此可以证明在int类型赋值给float类型时存在精度损失和四舍五入的现象.

2)浮点型底层计算的规则在浮点型计算时会出现精度问题,尽量避免对浮点型进行比较.

 

 看到这应该知道了,浮点型它就是太精确了,导致在有些实际运用中会造成一些不必要的影响.

3.字符型变量

概念:字符型变量就是存放字符常量的变量,底层使用16位无整型表示,即它可以表示2^16个值,在Java中,字符类型的字面量用单引号或Unicode编码或者ascii码来表示,记住单引号中只能用于表示单个字符.(多个字符用双引号表示为字符串,"a"这样也叫字符串,'ab'就会报错,'张'也可以)

*Java底层字符是作为一个整数来保存的.

                                                            (图片来源于网络)

其中48代表0,65代表A以及97代表a一定要记牢!!!

 对于特殊字符用转义符来表示,以下为常用的几个:

转义含义
\n表示换行
\t表示制表符,等同于table键
\'表示单引号
\''表示双引号
\\\表示斜杠\

 4.布尔型变量

在Java中只能用true和false来表示真和假,而这个true和false就是boolean型.

如果有同学发现了错误,请帮忙指出,谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈,啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值