需要背记了解用法的基础关键字系列(一)基本数据类型详解

基本数据类型与类型相关,让我们先大概浏览一下类型相关的需要掌握的基础关键字有哪些吧~

类型相关总览

基本数据类型:byte short int long | float double |char| boolean(这篇文章的重点)
空返回值类型:void
空:null(null值 也可以报空类型)
this:在本类中使用指代本类对象,用于调用本类中的属性与方法
supper:在子类中使用 代表父类 可以调用父类的属性与方法
extends:子类继承父类
implements:类继承(实现)接口
class:类的标识词
interface:接口的定义标识词

我们现在来聚焦基本数据类型
首先,类型在JAVA10中只有如下两种
在这里插入图片描述
只要记住了基本数据类型,就可以较为轻松地判断引用数据类型。不在基本数据类型的,就是引用数据类型。

基本数据类型

四类八种
整数型 byte short int long
浮点型 float double
字符型 char
布尔型 boolean

简单了解一下内存占用与取值范围
内存占用可以简单理解为占了内存条的多少
在这里插入图片描述
【byte】的范围是-128——127,很好记
【int】的范围大概是21个亿—— -21个亿
【long】的范围我们来启动计算器来看看
在这里插入图片描述
在这里插入图片描述
有19位
【单精度浮点数vs双精度浮点数】
1、字节越多越精确
(关于精确:0.01两位小数比较精确,0.1一位小数,相对于两位小数就不那么精确)
2、无论单精度浮点数还是双精度浮点数,都是一个近似值,不是精确值
(eg:十进制表示1/3,0.3的循环,由于空间没那么大,所以把后面的3舍掉,这样就是不精确)
在这里插入图片描述
【E】可以看作三点几乘上10的38次方
因此三的后面最多可以有38个0
先前long数过有19位,而float可以有39位。
因为float使用的是科学计数法,所以其表示的范围是可以比long更广的
所以科学计数法省空间,范围和内存占用不一定相关

【char】可以表示单引号的英文,单引号的中文,数字,中文,0-65535和被表示的存在一一对照的关系
【boolean】因为要么表示true要么表示false,因此一个字节的内存占用足矣

数据类型注意事项

1、字符串不是基本类型,而是引用类型
2、浮点型可能只是一个近似值,而非精确的值。
3、数据范围和字节数不一定相关,eg:float数据范围比long更加广泛,but float是4字节,long是8字节
4、浮点数当中默认类型是double,如果一定要使用float类型,需要加上一个后缀F。
如果是整数,默认为int类型,如果一定要使用long类型,需要加上一个后缀L,推荐使用大写字母后缀

关于byte为什么取值范围为什么是-128~127的小知识(可略过不看,有兴趣可以看看)
  • {为什么取值范围不是-128到128呢?
    原因——此处引用先辈(http://t.csdnimg.cn/KJtIp)文章中的内容
    计算机中的数是以反码形式存储的,反码再求反码得到该数真值
    反码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述###### {[强制类型转换],表达式如 byte test = (byte) b; 意味着将变量 b 的值强制转换为 byte 类型。

假设这里的 b 是一个 int 类型的变量,并且它的值超过了 byte 类型的取值范围。Java会执行所谓的“向下转型”(narrowing primitive conversion),即将较大的原始类型转换为较小的原始类型。在转换过程中,超出目标类型取值范围的部分会被截断(对于正数)或环绕(对于负数)来适应新的类型。

例如,如果 b 的值是 130,而我们将其强制转换为 byte 类型:

int b = 130;
byte test = (byte) b;

上述代码中,尽管 b 原本是 int 类型且值为 130,但转换为 byte 后,因为 byte 类型只能存储 -128 到 127 之间的值,因此 130 会溢出并环绕回 -126(因为在二进制补码表示法下,加1之后会得到下一个最接近的能够表示的负数)。

总结来说,byte test = (byte) b; 这样的格式是用于显式地将一个可能更大类型的变量 b 强制转换成 byte 类型。这种转换可能会导致数据丢失,特别是在 b 的值超出 byte 范围时。}

上述代码,最后会输出-56。原因如下:

456的二进制表示是111001000,由于int是32位的二进制,所以在计算机中,实际上是00000000000……111001000,当int转成byte的时候,那么计算机会只保留最后8位,即11001000。
int转成byte后第一个立马得到的都是补码,因此11001000是补码
11001000的最高位是1,那么表示是一个负数,而负数在计算机中都是以补码的形式保存的(正数的补码是本身,因此正数在计算机中也可以说是以补码的形式保存的)

补码[此处引用了(http://t.csdnimg.cn/l7ety)先辈文章]

在这里插入图片描述
补码转反码:
11001000-1=11000111

  • 在这里插入图片描述
    反码转原码
    11000111符号位不变,其余各个位取反得到:10111000

    在这里插入图片描述
    -
    -

,所以我们计算11001000的原码为10111000,所以11001000表示的是-56,所以最后test的值为-56。

  • 29
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值