Java 中的基本数据类型详解

你的关注意义重大!

今天我们正式开始每日一题系列,最先开始的专题是 Java SE 专题,很多人可能觉得不以为然,Java 有什么好准备的,人家不都是一言不合就框架运用、底层原理吗?

我想说的是,万变不离其宗,只要学好基础,就不愁学不会框架,很多自诩多年开发经验的程序员可能只是停留在各种框架的基本应用上,而对基础知识一知半解。这样长期下去,在职业生涯发展期间其实是很难精进的,这并不是危言耸听!

今天的题目是:

Java 中哪些基本数据类型?它们在定义之处是否有初始值?

大家做个简单的思考,然后我们开始今天的题目解答时间。

这个问题在很多人看来可能是个很基础的题目,但是说实话我第一眼看到的时候并不能完全答对,只能说个七七八八,也没少被面试官嫌弃。

Java 中的基本数据类型

Java 提供了八种基本类型,可以大致划分为如下几类:

  • 6 种数字类型
    • 4 种整数型
    • 2 种浮点型
  • 1 种字符类型
  • 1 种布尔类型

具体内容是:

byte

  • byte 的数据类型是 8 位、有符号、以二进制补码表示的整数;
  • 最小值是 -128(-2^7)
  • 最大值是 127(2^7-1)
  • 默认值是 0
  • byte 类型用在大型数组中可以节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;

short

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数
  • 最小值是 -32768(-2^15)
  • 最大值是 32767(2^15 - 1)
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0

int

  • int 数据类型是 32 位、有符号的以二进制补码表示的整数;
  • 最小值是 -2,147,483,648(-2^31)
  • 最大值是 2,147,483,647(2^31 - 1)
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0

long

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;
  • 最小值是 -9,223,372,036,854,775,808(-2^63)
  • 最大值是 9,223,372,036,854,775,807(2^63 -1)
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L

float

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f
  • 浮点数不能用来表示精确的值,如货币;

double

  • double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;
  • 浮点数的默认类型为double类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是 0.0d

boolean

  • boolean数据类型表示一位的信息;
  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false

char

  • char类型是一个单一的 16 位 Unicode 字符;
  • 最小值是 \u0000( 0);
  • 最大值是 \uffff(65,535);
  • char 数据类型可以储存任何字符;

此处大家要注意一下各个类型所对应的默认值,有的面试官可能不止会问到你有哪几种数据类型,还会涉及到一些初始值的问题。

类型转换

另外我们还需要注意一个特性:

整型、实型(常量)、字符型数据可以进行混合运算。在运算过程中,不同类型的数据会先转化为同一类型,然后进行运算。

转换又分为自动转换和强制转换,

自动转换必须满足转换前的数据类型的位数要低于转换后的数据类型,大致转换规则为低级到高级依次如下:

byte,short,char—> int —> long—> float —> double

数据类型转换必须满足如下规则:

  1. 不能对 boolean 类型进行类型转换;
  2. 不能把对象类型转换成不相关类的对象;
  3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换;
  4. 转换过程中可能导致溢出或者损失精度(主要发生在强制转换过程中,如 int 强制转换比它位数短的 byte 之后就有可能会精度缺失);
  5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。

强制类型转换也有亮点需要注意:

  1. 条件是转换的数据类型必须是兼容的;
  2. 格式:(type) value type 是要强制类型转换后的数据类型

延伸题目

你了解过 Java 中的自动装箱拆箱原理吗?文档!

原文发布于微信公众号 - 程序猿杂货铺(zhoudl_l)

原文发表时间:2019-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券