150天打卡day03_基本数据类型整数类型
1.课程介绍
昨天呢咱们说了变量是用于在程序运算过程中来存储数据的一个盒子,一个工具,但是这个盒子有大有小,我们不可能把所有的东西都放置在一起,不能把装芝麻的盒子拿来装西瓜,所以呢,咱们今天在基于昨天变量的基础之上,再来学习一个新的知识点:8大基本数据类型
灌鸡汤:可以说咱们每天都在学习新的知识,但是呢我觉得咱们的这些知识大家是完全能够消化的,在咱们的学习过程中如果遇到任何的问题一定要联系up主及时的反馈,及时的去问。一旦要是落的东西多了,后期补起来是很痛苦的。
2.基本数据类型
2.1 Java中的数据类型
关于数据类型大家应该也都已经接触过了,像是咱们昨天用过的int,double就是数据类型的一种,但是大家要注意,Java中的数据类型分为是两大类:基本数据类型和引用类型,本章节重点讲解什么是基本数据类型,引用类型会在面向对象的课程中专门讲解。
2.2 什么是Java中的基本数据类型
前面讲过变量,程序中的变量时一个存储单元,用于存储程序运行过程中所用到的数据,也就是说,当创建变量的时候,需要在内存中申请空间。而今天所讲的数据类型就是用于约定变量存储空间的大小。
就好比说你们女朋友们出门的时候是不是得背个小包包,那具体背什么样的包是根据什么决定的,是不是就是根据出门要带的东西去决定的啊,如果东西少了那就背个小包就可以了,那如果东西比较多了那就背个大一点的包,那么我们约定包的存储空间大小的目的呢是根据物品大小选择合适大小的包。
同样的到底约定变量存储空间大小的目的是根据数据大小选择合适的存储空间,将合适的数据存储到响应大小的存储空间可以避免计算机浪费资源,提高软件的运算性能。

Java语言提供了四大类基本数据类型,分别是整形,浮点型,布尔型和字符型,根据每个类型所占用的不同空间大小又分为了八种,整数类型分别是:byte,short,int,long,布尔类型,就一种boolean,字符char类型,和浮点类型float和double。

基本每个数据类型所占用的内存空间是不一样的,也就是说每个类型所能存储数据的大小都是不一样的,那我们就来看一下基本都能存储多少呢?

扩展
字节
用于计量存储容量的一种计量单位,一般有bit ,B ,KB ,MB ,GB,TB........
在二进制系统中,每个0或1就是一个位(bit),位是最小的存储单位
其中8位就称之为是一个字节(byte)
GB :吉字节,通常简写为G,是一种十进制的信息计量单位
MB:兆字节
KB:千字节
1GB = 1024MB ,1MB = 1024KB,1KB = 1024B (Bytes)
计算机存储单位的进率是1024而不是1000的原因:
目前计算机都是二进制的,它们计算单位,只有2的整数幂时才能非常方便计算机计算。
1024是2的10次方,因为如果取大了,不接近10的整数次方,不方便人们计算。取小了,进率太低,单位要更多才能满足需求,所以取2的10次方正好。
因为电脑内部的电路工作有高电平和低电平两种状态。所以就用二进制来表示信号,(控制信号和数据),以便计算机识别。
3.整数类型
Java中的整数类型一共有4种,用于存储各个范围的整数:

3.1 byte类型
byte类型也称之为是字节类型,是java中最小的数据类型,其内部是8位2进制数字,有效数值范围:-128~127,由于有效范围很小,所能存储的数据也是比较小的,所以用途也比较的有限,一般用来表示内存中或者文件中的最小存储单元。在IO和网络通讯时使用,用于表示IO和通讯过程中的最小数据单元,转换速度快。
提示:2进制知识点在后续的一个独立的课程单元中进行讲解

Byte是Java提供的包装类API,在API课程阶段会详细讲解其功能。
3.2 short类型
short类型是Java中存储整数数据范围较小的数据类型,内部是一个16位2进制数字,其有效范围是-32768~32767,由于范围小,用的也是比较少的,Java中定义short类型,主要还是为了和C语言做兼容。
除了考试的时候会用到short类型,实际的开发汇总很少使用short类型。
一开始计算机是简单的机器语言,后来是编汇语言,之后是高级语言。而高级语言中最经典,历史最久远的应该是C语言。为了补充C语言的不足,出现了C++,随之而来的是Java和C#
如果说,C++是C语言的补充,那么这个Java和C#就是为了降低我们学习C++的难度而出现的,如果你觉得C++太难了,那么先学Java或者C#,二选一,这两种语言没有什么区别
案例:

3.3. int类型
int类型是Java中最常用的整数类型,在计算机内部是一个32位2进制数字,范围是-2147483648 ~2147483647。这个范围非常实用,可以涵盖大多数整数用途,所以int用途最多最广。因为int在内存中的2进制数字是32位数,其2进制位长度是byte类型长度的4倍,也称int在内存中占有4个字节。
关于int类型我们经常要使用到,所以要注意的事项也比较多,一定要注意三点:
整数直接量是int类型
所谓整数直接量(literal)就是直接写出的整数,例如:下面的语句中,100就是直接量。

1、整数的直接量的类型默认为int类型,如果直接写出的整数超过了int的表达范围,将会出现编译错误,下面的语句,就是因为超出了整数的范围而导致的编译错误。
2、 除了通常的十进制数字形式,整数直接量也可以写成16进制的形式(以0X或0x开头)或8进制的形式(以0开头)但是输出的时候都会输出为十进制的形式,因为是给人看的,
在C语言里,整数有三种表示形式:十进制,八进制,十六进制。其中以数字0开头,由0~7组成的数是八进制。以0X或0x开头,由0~9,A~F或a~f 组成是十六进制。除表示正负的符号外,以1~9开头,由0~9组成是十进制。
整型数据除法运算中的取整
若对两个整数相除,会舍弃小数的部分(注意:不是四舍五入),结果也是整数。示例代码如下所示:
运算时要防止溢出的发生
当两个整数进行运算时,其结果可能会超过整数的范围而发生溢出,正数过大而产生的溢出,结果为负数;负数过大而产生的溢出,结果为正数。示例代码如下所示:
虽然说int类型是经常会被用到,但是有同学可能要问,那如果数据量较大,int又存不下那该怎么办呢,比如我要存储全国14亿人口,用int肯定是存不下的,Java应对这种情况呢,还给我们定义了一种叫做长整型的数据类型,long类型。
3.4 long类型
在表示整数时,如果int类型的范围不够,可以使用long类型,一个long型的变量占用8个字节(即64位),最大表示范围为:-263 ~ 263-1,即最小值是 -9,223,372,036,854,775,808(-2^63),最大值是 9,223,372,036,854,775,807(2^63 -1)
Java支持更大的整数运算,需要使用API BigInteger类实现,这个类是后续课程的内容。
long整数类型使用事项
默认的整数类型是int类型,加了后缀“L/l”以后才是long类型直接量。
由于小些l与1容易混淆,所以建议使用大写L更好。
计算时候 int 不够时候采用long类型进行计算。
一个常见错误案例:
这个案例的问题是等号右侧是两个int类型数据相加, 其结果也是int类型数据,并且此时int已经溢出了,而赋值语句是将溢出以后的in赋值给了long变量j,这样就没有达到避免溢出的目的。如上代码可以修改为:
修改后等号右侧是 int与long相加,Java会将int转换为long,然后按照long与long相加进行计算,这样结果就是long类型不会发生溢出了。
long表示时间
关于long类型的一个常见的用途就是表示系统时间,可以获取从现在此时此刻到1970年零点时的毫秒数.
时间是科学家研究的话题,在宇宙学尺度中,时间空间可以扭曲,可以相对变化,但是对于我们人类而言,时间是一个没有开始,没有结束的过程,人类未来表示时间,为了记录时间发明了历法,为时间人为的额约定了原点和时间刻度:纪元元年,年日时分秒,计算机采用了类似的方式计算时间,计算机的时间通常的做法是按照格林威治时间1970年元旦时间作为时间原点,采用毫秒作为刻度进行计算时间,按照这约定,计算机中的现在时刻就是从1970年元旦开始累计的毫秒数,1970年元旦以前的时间采用负数毫秒数表示。
1970元旦采用这个时间作为纪元是为了纪念计算机行业最伟大的操作系统Unix的额诞生,计算为精确表示时间,采用毫秒作为时间刻度,其中1毫秒等于1/1000秒
Java中的时间也是按照这个惯例计算时间的,由于毫秒数精度高数值范围大,所以才用long类型存储时间,并且提供了API可以获取当前计算机系统中的时间毫秒数,JDK提供System.currentTimeMillis() 方法可以获取当前计算机系统中时间的毫秒数,返回1970年1月1日零点到此时此刻所经历的毫秒数,数据太大,故其数据类型为long。
整数类型的计算
①byte、short数据作为int
②int类型计算得到int类型,long类型计算得到 long类型
③int与 long计算时候先int转型long再进行计算
3.5 整形总结
整数类型包括byte,short,int,long四种
byte,short很少使用,int最常用,long比较常用
保存整数数据时候优先选择int类型,如果数据或者计算结果超过int就采用long类型
Java系统时间采用long类型表示

本节打卡还没有结束哦,接下来是浮点类型,请小可爱移步下一骗,wink~
