❤️‍大家好,我是贾斯汀,欢迎进来学习啦~❤️‍

【学习背景】

相信很多初学Java的小伙伴或者已经入行的小伙伴,都知道Java的数据类型主要分为引用数据类型和基本数据类型,引用数据类型就是平时大家说的万物皆对象Object,而基本数据类型,则有八种,大家应该都记得(也可能不知道或者记不全了,哈哈哈)

如果你是Java初学者,那么当你去面试Java初级工程师岗位的时候,面试官可能会比较喜欢问这个问题,主要是想考察小伙伴们对基本数据类型了解多少,写代码时会不会乱用基本数据类型,给公司的大佬们挖坑,哈哈哈~

本文主要目的是给Java初学者或者想要加深自己对这八种基本数据类型的认识和理解的小伙伴,应届生秋招进行中了,很多刚毕业的小伙伴,当你再去面试遇到面试官让你回答【关于Java八种基本数据类型?】这个问题的时候,不要就简单的回答,Java八种基本数据类型有byte/short/char/int/float/double/long/boolean…OVER!!
相信学习了本文,你还可以在从这几个方面去回答,可能会更加分哇~

  • 八种基本数据类型的默认值是多少?
  • 八种基本数据类型的取值范围是多少?
  • 八种基本数据类型的占用空间如何?
  • 八种基本数据类型的相互转换

进入正文~

学习目录

  • 一、八种基本数据类型
    • 1.1 字节型byte
    • 1.2 短整型short
    • 1.3 字符型char
    • 1.4 整型int
    • 1.5 单精度浮点型float
    • 1.6 双精度型double
    • 1.7 长整型long
    • 1.8 布尔型boolean
  • 二、基本数据类型转换
    • 2.1 自动转换类型
    • 2.2 强制转换类型
  • 三、面试总结
    • 八种类型?
    • 默认值?
    • 占用空间?
    • 取值范围?
    • 类型转换?

一、八种基本数据类型

1.1 字节型byte

字节(byte)是计算机的基本单位,但不是最小的单位,最小的单位是位(bit)
1 byte = 8bit 即一个字节占用8位二进制~

  • 默认值: 0;
  • 数值范围: (-2^7) ~ (2^7-1) 即 -128 ~ 127
  • 占用空间:1 byte= 8bit即一字节占用8位二进制;
  • 注意事项:byte在大容量数组中使用时非常节省空间,只占用int类型的四分之一;
  • 代码例子:byte b1 = -127,byte b2 = 128;

1.2 短整型short

短整型short 是一种比较小的整数~

  • 默认值: 0
  • 数值范围: (-2^15) ~ (2^15 - 1) 即 -32768 ~ 32767;
  • 占用空间:2 byte = 16bit即两字节占用16位二进制;
  • 注意事项:在大容量数组中使用相对节省空间,只占int的二分之一;
  • 代码例子:short s1 = -666,short s2 = 666。

1.3 字符型char

char字符型是Java非常独特的基本数据类型,占用两个字节,采用了Unicode(万国码)作为字符编码,可以存储任何字符

  • 默认值: 0(注意这里的0是Unicode值,对应的字符是空字符串'');
  • 数值范围:0 ~ 65535对应Unicode码 \u0000 ~ \uffff (常用字符数值,例如空字符’'对应0、'A’对应65、'a’对应97、字符数字’0’对应48);
  • 占用空间:2 byte = 16bit即两个字节占用16位二进制;
  • 注意事项:计算机业界为实现跨语言信息交换提供了两种比较常用的交换码,分别是ASCII(美国信息交换标准代码,范围0 ~ 127)和UNICODE(单一码或万国码,范围 0~ 65535)
  • 代码例子:char c= ‘’;char c1= ‘A’;char c2= ‘a’;char c3= ‘0’;

1.4 整型int

我们平时讲的整数,在Java中指的就是int整型

  • 默认值: 0;
  • 数值范围: -2^31 ~ (2^31 - 1) 即 -2,147,483,648 ~ 2,147,483,647;
  • 占用空间:4 byte(32bit)即两个字节占用32位二进制;
  • 代码例子:int i1 = -9999999, int i2 = 9999999。

1.5 单精度浮点型float

单精度浮点型float是Java中的一种浮点型,数值后面带F或f~

  • 默认值: 0.0F(或0.0f);
  • 数值范围: -2^128 ~ 2^127 精度范围:7~8位有效数字(不用刻意记)
  • 占用空间:4 byte = 32bit即两个字节占用32位二进制;
  • 注意事项:
    (1)在大容量浮点数组中使用比较节省空间,只占double类型的二分之一
    (2)因为float浮点型是有精度的,不能用来表示精确的值,因此实际开发涉及到金钱货币的,不能用float,一般使用BigDecimal,感兴趣的话,可以百度了解下;
  • 代码例子:float f1 = 123.45F;或 float f2 = 123.45f;

1.6 双精度型double

双精度浮点型double是Java中默认的一种浮点型,数值后面带D或d或者不带标识符的小数~

  • 默认值: 0.0D0.0d0.0
  • 数值范围:取值范围:-2^1024 ~ 2^1023 精度范围:16~17位有效数字(不用刻意记);
  • 占用空间:8 byte = 64bit即两个字节占用64位二进制;
  • 代码例子:double d1=7D;double d2=7d;double d3=7.0;
  • 注意事项:同样double浮点型是有精度的,不能用来表示精确的值,因此实际开发涉及到金钱货币的,不能用float,一般使用BigDecimal,感兴趣的话,可以百度了解下;

1.7 长整型long

长整型long,顾名思义,一般用来存储比较大的整数值~

  • 默认值: 0L(或0l,不过不建议使用小写字母l,容易与数字1混淆);
  • 数值范围: -2^63 ~ (2^63 -1) 即 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807;
  • 占用空间:8 byte = 64bit即两个字节占用64位二进制;
  • 代码例子:long l1 = -9999999999999L,Long l2 = 9999999999999L;

1.8 布尔型boolean

布尔型boolean与其他7种基本数据类型不同,只有true/false两种值,主要用来做判断条件的~

  • 默认值: false
  • 数值范围: true/false
  • 占用空间:1bit 或 4bit
  • 代码例子:boolean b1 = true,boolean b2 = false;
  • 注意事项:关于boolean类型的true/false占用1bit还是4bit,业界并没有给出精确的定义,因为boolean编译后其实使用了int代替,而true用1表示,false用0表示,《Java虚拟机规范》中也给出了boolean占用4个字节、boolean数组占用1个字节的定义;

二、基本数据类型转换

经过前面的学习,我们知道除了boolean类型,其他7种基本数据类型占用的位数空间由小到大为:
byte(8位) < short(16位) = char(16位) < int(32位) = float(32位) < double(64位) = long(64位)

2.1 自动转换类型

当两种基本数据类型做运算时,最终的结果自动提升为位数空间比较大的那个类型

例如:

double d1 = 1.1;
int i1 = 1;
double value = d1 + i1;

你不能:

double d1 = 1.1;
int i1 = 1;
int value = d1 + i1;


需要注意的是,char/short、int/float及double/long两两位空间是一样大小的,并不是能全部实现自动类型转换,不过一般现在的IDE等开发工具,都会自动编译报错,如有需要使用强制转换类型即可,这个问题不大~

2.2 强制转换类型

当两种基本数据类型做运算时,最终的结果会自动提升为位数空间比较大的那个类型,如果我们想要让结果是位数空间比较小的那个类型,就需要进行强制转换~

例如,前面讲到的直接用int接收double数值结果的错误例子:

double d1 = 1.1;
int i1 = 1;
int value = d1 + i1;

这种情况,就可以使用强制转换符(类型)来实现:

double d1 = 1.1;
int i1 = 1;
int value = (int)(d1 + i1);

不过细心的同学,强制转换类型,可能会导致精度丢失,比如本来是double类型的结果是2.1,强制转换为int类型后得到value变成2了,精度丢失了

三、面试总结

八种类型?

byte/short/char/int/float/double/long/boolean

默认值?

byte(0) /short(0) /char(0)/int(0)/long(0L)/float(0.0f)/double(0.0d)/boolean(false)
PS:这里需要注意的是char字符型的默认值是0,是一个空字符'',Unicode码对应'\u0000',顺便提一下引用数据类型的默认值是null值~

占用空间?

byte(1字节8位)/short(2字节16位) /char(2字节16位) /int(4字节32位) /float(4字节32位) /double(8字节64位) /long(8字节64位)/boolean(1字节或4字节)

取值范围?

关于取值范围,我发现除了字符型char和float、double比较特殊之外,其他一般都是套用公式 -2^(位数-1) ~ ( 2^(位数-1) -1) 计算出来的

类型 取值范围
char 0 ~ (-2^16 -1) 即 0 ~ 65535
byte -2^7 ~ (-2^7 -1) 即 -128 ~ 127
short -2^15 ~ (-2^15 -1) 即 -32768 ~ 32767
int -2^31 ~ -2^31 -1 即 -2147483648 ~ 2147483647
float 取值范围:-2^128 ~ 2^127 精度范围:7~8位有效数字(不用刻意记)
double 取值范围:-2^1024 ~ 2^1023 精度范围:16~17位有效数字(不用刻意记)
long -2^63 ~ -2^63 -1 即 -9223372036854775808 ~ 9223372036854775807
boolean true/false

类型转换?

当两种基本数据类型做运算时,最终结果会自动转为位数空间大的那个类型,如果想要最终结果为位数空间小的类型,可以通过强制转换符(类型)指定括号里面的类型来实现。

原创不易,觉得有用的小伙伴来个三连(点赞+收藏+评论 )+关注支持一下,非常感谢~

Java--重新认识八种基本数据类型,以后入职不给公司大佬挖坑相关推荐

  1. java四类八种基本数据类型

    java基本数据类型就8种,除了这些都是引用型的了.  一.java四类八种基本数据类型 第一类:整型 byte short int long 第二类:浮点型 float double 第三类:逻辑型 ...

  2. Java中的八种基本数据类型

    Java中主要有八种基本数据类型:byte.short.int.long.float.double.boolean.char. 各种数据类型作用: 1.byte: 8位.有符号的以二进制补码表示的整数 ...

  3. java中的八种原始数据类型

    java中的的原始数据类型可分为4大类:整数型(byte,short,int,long),浮点型(float,double)布尔型(boolean)字符型(char). 首先我们先要知道它们的各自取值 ...

  4. 浅谈Java语言中八种基本数据类型

    1.布尔型-----boolean,boolean 类型所占存储空间的大小没有明确指定,其取值为true或false,其默认值为false. 2.字节型----byte,byte 类型所占存储空间大小 ...

  5. java四类八种_java四类八种基本数据类型

    Java基本数据类型就8种,记住就好了.除了这些都是引用型的了. java四类八种基本数据类型 第一类:整型 byte short int long 第二类:浮点型 float double 第三类: ...

  6. Java八种基本数据类型定义与取值范围

    基本数据类型也称为简单数据类型,Java语言中有八种基本数据类型, 分别为 boolean.byte.short.char.int.long.float.double,这八种基本数据类型通常分为四大类 ...

  7. java 基本数据类型_Java语言的八种基本数据类型介绍

    本文主要向大家介绍了Java语言的八种基本数据类型介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. Java的基本数据类型有八种 一,四种整数类型(byte.short.int.l ...

  8. java 数据类型转换的一场_Java基础 — 四类八种基本数据类型

    整型:整数类型int 一般的数据. long 极大的数据. short 用于特定的场合,比如底层的文件处理或者需要控制占用存储单元空间量的大数组. byte 用于特定的场合,比如底层的文件处理或者需要 ...

  9. java默认值_Java中八种基本数据类型的默认值

    通过一段代码来测试一下 8种基本数据类型的默认值 package dierge; public class Ceshi { int a; double b; boolean c; char d; fl ...

最新文章

  1. 分类算法:决策树(C4.5)
  2. 如何将.py文件转换为.exe
  3. android 百度定位开启后fragment 不显示,解决Android百度地图MapView在ViewPager中Fragment切换黑屏问题...
  4. 谷歌对用户搜索加密这一做法对seo的影响!
  5. Maven的依赖管理
  6. JQUERY操作html--获取和设置内容、属性、回调函数
  7. 用Python告诉你,为什么宇宙的尽头是公务员!
  8. 特斯拉Model X成NASA官方宇航员转运车辆,已打上NASA标志
  9. Spark的存储管理
  10. AJAX技术文案沙雕,vue-router 中使用 keep-alive 控制 ajax 请求的缓存策略(二)
  11. 中国邮政支付宝卡通开通流程
  12. 消极和积极的道德--给亲爱的安德烈
  13. 第一次尝试节奏跑(乳酸门槛跑)
  14. 退出mysql控制台与退出mysql
  15. AI就业前景越来越严峻了,AI 开发者能怎样提升个人竞争优势?
  16. C++之类和对象1:望尽天涯路
  17. 2021-03-13 软件工程导论-自我简介
  18. “error : unknown filesystem”的解决的方法
  19. Synopsys Sentaurus TCAD系列教程之--Sde概述
  20. jsoup 去除html,Jsoup HTML 清理

热门文章

  1. 基于ROS的手眼标定程序解决方案|支持眼在手外/上
  2. S60 3rd手机权限突破
  3. 保姆式教你在Win10系统下安装Mac虚拟机
  4. xenserver 安装新硬盘_xenserver 添加和卸载硬盘
  5. 北风网 李炎恢老师全部视频教程下载地址大全
  6. 安卓Android家教平台软件app毕业设计
  7. MLD(组播侦听发现协议)
  8. 问题记录:搭建cms时数据库连接错误
  9. n支队伍循环赛安排(附完整代码)
  10. 深度神经网络的深度是?,深度神经网络通俗理解