我们前面学习了变量,回忆一下变量定义:数据类型 变量名 = 初始化值。之前会有朋友会疑惑什么是数据类型呢?那么这节课我们就开始学习什么数据类型以及具体有哪些数据类型。

我们的学习课程是循序渐进的,有时候看到小编在某些地方备注说明以后详细讲解,是因为目前我们还没到学习那个知识点的时候。跟着小编的课程一步一步来,把每一个知识点都掌握牢固,为以后的大项目打好基础。其实Java中的很多知识点都是与我们的生活息息相关的,大家可以把很多的知识点结合生活上的事情来理解,就会觉得很容易。

下面我们开始学习Java的数据类型,开局一张图,如下图所示:




java double类型相等比较包括是否为空 java中double类型比较大小_数据类型


在Java中数据类型整体分为两大类:

1:基本数据类型/原生数据类型(共8个)

数值型:

整数类型:byte,shot,int,long。不同的整数类型在内存占用的内存空间大小是不一样的。就像同样水杯,大小不一样的水杯装水的容量却是不一样的。大水杯装很少的水就会浪费空间,小水杯装很多的水就会溢出。所以引申到数据类型上面也是一样的,数据类型就是一个容器,只有设定合适的数据类型才是正确的。

小数类型:float,double。

字符型:char,什么是字符型,就是字母或者符号。

布尔型:boolean,表示对与错true,false

2:引用数据类型/对象数据类型:类、接口、数组。引用数据类型我们后面再讲解。

基本数据类型详解

在详细解说具体的基本数据类型之前,我们先必须了解一下基本数据类型在内存空间占位是多少,这样会避免我们在实际项目出现声明变量时数据类型过大或者小,导致内存浪费或者内存溢出的情况。同样我们先看图,如下图所示:


java double类型相等比较包括是否为空 java中double类型比较大小_数据_02


先了解一下一个字节是8位,对应的数据范围的计算就是 2的(字节数*8位)的 次-1,减去1的原因是因为最高位符号位。我们还要记住数据类型的默认值,也就是初始化的值。

①、boolean类型:通常用于逻辑运算和程序流程控制(条件选择/循环)。该类型的值只有true或false,表示真或假。不可以使用0或者非0的整数来代替false和true。false和true是boolean的常量。


java double类型相等比较包括是否为空 java中double类型比较大小_数据类型_03


②、整数类型(byte-short-int-long),它们唯一的不同是存储空间的容量大小不同。根据具体需要存储的数据去选择合适的数据类型。一般使用int类型即可。

java语言的整型常量默认是int型。声明long型变量后面加上L或者l。

整型常量有四种表现形式:

1、二进制整数:0B或ob开头,如:int a = 0B110;

2、八进制整数:要求以0开头,如:int a = 012;

3、十进制整数:如 int a = 20;

4、十六进制整数:要求以0X或0x开头,如:int a = 0x12;

我们通过实例的demo来演示一下,如下图所示:


java double类型相等比较包括是否为空 java中double类型比较大小_数据类型_04


③、小数类型(float-double),又称为浮点型,其中float表示单精度,double表示双精度,但是二者都不能表示精确的小数。

Java的浮点类型常量有两种表现形式:

1、十进制形式:3.14,2.5。

2、科学计数法形式:6.12e2。科学计数法表达式返回的结果是double类型。

默认情况下,一个浮点类型的字面量默认是double类型,若要声明一个float的常量,则需要在常量后面加上f或F,double类型常量后面的D或d可省略,若是用float接受double类型的数据,则会发生内存溢出。

因为float和double都不能精确的表示小数,那么在精度要求高的系统中该怎么表示?后面我们会讲到BigDecimal,它表示任意精度的数据。

④、字符类型(char):字母和符号。表示16位的无符号整数或者Unicode字符,Java对字符采用Unicode编码。Unicode收集了世界上所有的语言文字中的符号,是一种跨平台的编码方式,Java的字符占两个字节,可以表示一个汉字,因为一个汉字也是占两个字节。

什么是编码?计算机智能表示0和1两个数,于是人们便规定使用一个数字去表示一个特定的字符,比如a使用97表示。char前256个字符和ASCII(美国信息交互标准编码)码中的字符重复。

char常量的4中表现形式:

1.直接使用单个字符来指定字符变量。格式如‘A’,‘7’。

2.直接作为十进制整数数值使用,但是数据范围在[0,65535],格式如97,但是打印出来的值依然是ASCII码表对应的符号。如97打印出来的字符是a。

3、跟第2点一样,只不过表示的是16进制的数值。

所以有人说char本质也是整型,也是有道理的。