搜索
写经验 领红包

java基本数据类型有哪八种(java基本数据类型有哪几种)

导语:Java基本数据类型

1.概述

佛说,大千世界,无奇不有。在这个世界里,物种的多样性,遍地开花,同样,在Java的世界里,也有着异曲同工之妙,Java秉承面向对象的特性,必然少不了区分对象的类型,就像下图的“CuteCat”,它描述着在现实世界中存在的事物,同时也是今天我们要说的Java数据类型。

Java中的数据类型可划分为两种:

1)基本数据类型

基本数据类型是Java语言中数据操作的基础,包括byte、short、int、long、float、double、char、boolean。

2)引用数据类型

引用数据类型包括类(class)、接口(interface)、数组。

如果只看文字描述的话,可能没有那么直观,上图自己体会。

那么首先来看看基本数据类型,不同的数据类型有着不同的默认值以及取值范围,既然取值范围不同,其所占用的内存空间也是不同的。来看下表:

数据类型

默认值

取值范围

内存占用

byte

0

-128~127(-2^7~2^7-1)

1字节(8位)

short

0

-32768~32767(-2^15~2^15-1)

2字节(16位)

int

0

-2,147,483,648~2,147,483,647(-2^31~2^31-1)

4字节(32位)

long

0L

-2^63~2^63-1

8字节(64位)

float(单精度)

0.0f

1.4E-45~3.4028235E+38

4字节(32位)

double(双精度)

0.0d

4.9E-324~1.7976931348623157E+308

8字节(64位)

char

&39;

&39;(十进制0)~&39;(十进制65535)

2字节(16位)

boolean

false

true、false

1字节(8位)

2.基本数据类型

通过上面的介绍,相信大家对基本数据类型已经有一个大致的了解,接下来继续详细说明。

2.1 byte

byte类型属于整型,最小值为-128,最大值为127,默认值为0,内存占用为1字节。在编写程序时,如果可以确定变量的取值范围,为了节省空间,可以使用byte来存储数据。代码示例:

 byte b1 = -128; byte b2 = 127;
2.2 short

short类型属于整型,最小值为-32768,最大值为32767,默认值为0,内存占用为2字节。代码示例:

 short s1 = -32768; short s2 = 32767;
2.3 int

int类型属于整型,最小值为-2,147,483,648,最大值为2,147,483,647,默认值为0,内存占用为4字节。代码示例:

 int i1 = -2,147,483,648; int i2 = 2,147,483,647;
2.4 long

long类型属于整型,最小值为-9,223,372,036,854,775,808,最大值为-9,223,372,036,854,775,807,默认值为0,内存占用为8字节。代码示例:

 long l1 = -9,223,372,036,854,775,808; long l2 = 9,223,372,036,854,775,807;
2.5 float

float类型属于单精度浮点型,小数点有效位数为7位,最小值为1.4E-45,最大值为3.4028235E+38,默认值为0.0f,内存占用为4字节。示例代码:

 float f  = 1.1f;
2.6 double

double类型属于双精度浮点型,小数点的有效位数为16位,最小值为4.9E-324,最大值为1.7976931348623157E+308,默认值为0.0,内存占用为8字节。

 double d = 1.1;
2.7 char

char类型可以表示一个16位的Unicode字符,最大值为&39;(十进制65535),最小值为&39;(十进制0),内存占用为2字节。代码示例:

 char c = &39;;

Tips:编码类型不同,一个字符所在的内存空间也就不同。

ASCII编码:一个英文字符占一个字节,一个中文字符占两个字节。Unicode编码:一个英文字符和一个中文字符占都两个字节。utf8编码:一个英文字符占一个字节,一个中文字符占三个字节。2.8 boolean

boolean类型的值分别为true、false,通常用于条件判断。代码示例:

 boolean flag = true;
3.基本数据类型转换3.1 为什么需要类型转换

类型转换?为什么Java基本数据类型之间会涉及到类型转换呢?

试想一下在现实世界中,如果将一个苹果和一个梨拿来比较,由于苹果和梨是两个不同的类型,自然是无法进行比较的。同理,Java是强类型语言,所以要求在执行赋值运算和算术运算的时候,参与运算的数据类型必须保持一致。

3.2 哪些基本数据类型可以相互转换

除了boolean类型,其余的数据类型在内存中存储的都是数值,因此,除了Boolean类型,其余的数据类型之间都可以相互转换。

3.3 类型转换方式隐式类型转换

取值范围小的数据类型向取值范围大的数据类型转换时,可以自动转换,也叫隐式类型转换,有种大鱼吃小鱼的感觉。示例代码:

 byte b =127; short s = b; int i = s; long l = i; float f = l; double d = f;

如果是进行算数运算,也会进行类型自定转换:

1、如果其中一个数是double类型,其余的数也会转换为double类型。

2、如果其中一个数是float类型,其余的数也会转换为float类型。

3、如果其中一个数是long类型,其余的数也会转换为long类型。

我们再来看看这几种基本类型之间的隐式转换关系,实线表示无精度丢失,虚线表示可能会出现精度丢失。比如1234567890是一个10位的int类型的整数,它包含的位数比float类型所能够表达的位数多,在进行转换时就会出现精度丢失。

强制类型转换

取值范围大的数据类型向取值范围小的数据类型转换时,无法进行自动转换,需要我们为其指定显式的类型转换。进行强制类型转换容易造成数据异常,就像小鱼吃大鱼一样,如果硬把大鱼塞给小鱼吃,那必然是对小鱼的巨大破坏。代码示例:

 long l = 9223372036854775807L; int i = (int) l;// i的值为-1。

Tips:整型之间的隐式转换不会出现精度的丢失,整型和浮点型之间的类型转换可能会出现精度丢失。

本文内容由小美整理编辑!