优秀的编程知识分享平台

网站首页 > 技术文章 正文

基本数据类型(java基本数据类型)

nanyue 2024-08-01 22:55:08 技术文章 6 ℃

java中有八种基本数据类型

类型

数据类型名称

占用字节数(一个字节是8位)

数据范围

默认值

包装类

数值型

byte

1

-128~127

0

Byte

数值型

short

2

-2^15~2^15-1

0

Short

字符型

char

2


\u0000

Character

数值型

int

4

-2^31~2^31-1

0

Integer

数值型

long

8

-2^63~2^63-1

0L

Long

数值型

float

4

3.402823e+38~1.401298e-45

0.0f

Float

数值型

double

8

1.797693e+308~4.9000000e-324

0.0d

Double

布尔

boolean

1位


FALSE

Boolean

按照取值范围做排列如下:

double > float > long > int > short > byte

数据类型之间存在转换的问题,转换分为自动转换和强制转换。

自动转换:隐式的,无需声明

强制转换:显式的,需要特别声明

1.自动转换

取值范围从小转换到大,是可以直接转换的,而从大转成小,或转成 char 类型,则必须使用强制转换。

在自动类型转化中,除了以下几种情况可能会导致精度损失以外,其他类型的自动转换不会出现精度损失。

》int--> float

》long--> float

》long--> double

》float --> double

除了可能的精度损失外,自动转换不会出现任何运行时(run-time)异常。

2.强制转换

如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换。

这也被称作缩小转换(narrowing conversion),因为必须显式地使数值更小以适应目标类型。

强制转换的格式和实例如下:

long lo = 99;
int i = (int) lo;

严格地说,byte转为char不属于(narrowing conversion),因为从byte到char的过程其实是byte-->int-->char,所以widening和narrowing都有。

强制转换可能会损失精度,主要有两种场景

1、整数类型之间相互转换,如果整数超出目标类型范围,会对目标类型的范围取余数。

2、从浮点类型转成整数类型,会发生截尾(truncation),也就是把小数的部分去掉,只留下整数部分。此时如果整数超出目标类型范围,一样将对目标类型的范围取余数。

类型自动提升

在表达式计算过程中会发生类型转换,这些类型转换就是类型提升,类型提升规则如下:

  1. 所有 byte/short/char 的表达式都会被提升为 int
  2. 除以上类型,其他类型在表达式中,都会被提升为取值范围大的那个类型,例如有一个操作数为double,整个表达式都会被提升为double
最近发表
标签列表