Java基础,数据类型

 一、计算机硬件

计算机的三大硬件:CPU、内存、硬盘

1、内存的存储形式

内存采用的方案:电容器

电容相当于电池

在内存当中,每一比特的数据都是存储在一个电容当中

存储数据:0就给电容充电,1就不给电容充电

读取数据:通过放电,检测电容是否带电,来读取数据

2、磁盘的的工作原理

存储数据:电生磁

当电流通过磁头线圈时,根据安培环路定律,线圈会产生磁场。从而使磁颗粒产生对应的磁场,存储数据 N代表0 S代表1

一个小的磁颗粒都会存储一个比特数据

读取数据:磁生电

磁颗粒会产生磁场,磁头划过磁颗粒产生电流,通过电流的方向,判断存储0/1

计算机80%以上的事件都是读取数据

磁盘找数据的时间3-5ms

CPU计算数据的时间0.2ns

1ms=1*10^6ns

如果磁盘之间将数据共给CPU,这是不合理的

内存查找数据的时间大约是20ns左右

CPU的工作效率大约是10%

二、java文件编译

进行编码之后,xx.java 源文件 通过idk,使用iavac会将文件变为xx.class二进制的字符码文件

这两个都是以文件的形式才能出在磁盘中

三、Java数据类型

1、数据类型

数据类型:数据在内存中的存储形式。

强数据语言:C、C++、Java(inta=10)

弱数据类型语言:js、python...(vara=10.00)

java的数据类型:

常用的整型:

byte:1bit符号位,7bit数值位

short:1bit符号位,15bit数值位

int:1bit符号位,31bit数值位

long:1bit符号位,63bit数值位

浮点型:

float:1bit符号位,8bit阶位(小数点存在的位置),23bit尾数

double:1bit符号位,11bit阶码,52bit尾数

总结:

2、计算机对数据的存储

计算机对整型数据的存储方式:

(1)、源码

定义两个byte类型的变量:

byte a = 10;
byte b = -10;

byte是基本数据类型-------------------->数据类型决定数据在内存当中如何存储

byte大小是8bit(1字节) 1bit符号位 7bit代表数值位

byte a = 10;: 00001010 (源码)

byte b = -10; 00001010 (源码)

数据的源码:数据直接转换成对应的二进制形式,然后根据数据类型进行补充,其中正数最高位0,负数最高位是1

当进行a+b的运算的时候,源码的运算:

结果不为0,这和事实不符合,所以计算机一定不是以源码的形式存储数据

(2)、反码

正数的反码 = 源码

负数的反码 = 源码的符号位不变,其余按位取反

a:反码: 00001010 (反码)

b:反码: 11110101 (反码)

计算a+b:

此时结果为-0

所以计算机存储数值类型的数据肯定不是存储反码,因为反码存在+-0的问题

(3)、补码

正数的补码 = 反码 = 源码

负数的补码 = 在反码的基础上末尾+1

a:反码: 00001010 (补码)

b:反码: 11110110 (补码)

此时运行结果为100000000,但是byte只能占用8bit内存,所以会产生溢出,只能存储00000000

此时符号位为0,所以00000000(补码) ------------->00000000(源码) = 0

计算机当中存储数值类型数据使用的是补码的形式

经典题:

public class Demo {
    public static void main(String[] args) {
       
       byte a = 127;
       byte b = 1;
       byte c = (byte) (a + b);
        System.out.println(c);

    }
}
-128

结果是-128

因为byte表达的范围是(-128~127)

当127+1=128的时候,而且c也是byte类型

所以会发生溢出,要想在(-128~127)范围里c只能是-128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值