java中基本数据类型转换及运算

在讲解基本类型数据运算之前我们首先来了解各种基本数据类型:

Java中一共有8中基本数据类型,并且每种数据类型所占的存储空间是固定的,这种特性也增加了java的可移植性,这一点和c语言c++是不同的,因为java是在虚拟机上运行的,数据类型和操作系统以及硬件间的适配是通过虚拟机来实现的。

基本介绍

Java中的8中基本数据类型:byte  short  int  long  float   double   boolean  char

byte  short  int  long都表示有符号数,即最高位是用来表示正负的,0表示正,1表示负;

byte占一个字节,表示范围:-~2^7-1 即-128~127

short 占两个字节,表示范围:--~2^15-1

int  占四个字节 ,表示范围:-~2^31-1

long 占八个字节,表示范围:-~2^63-1

float 占四个字节, double占八个字节

char 占两个字节,一个char代表一个unicode码,范围:0~2^16

boolean 占一个字节,只有true和false两个值

使用注意事项:

一、            在程序中使用整数常量,默认该常量为int型

二、            如果一个整数的值大于int类型的范围,则需要将其赋值给一个long类型的变量,并且必须在该数的后面加上l或者L

三、            程序中小数是默认为double类型的,若要将其赋值给float类型的数据则需要在数据后面加上f或者F,或者直接强制转换

四、            可以直接将byte、short、int、long类型的数值赋值给float和double;

类型转换与运算

类型转换包括强制类型转换和自动类型转换;

Java允许整型、字符型、浮点型数据进行混合运算,运算时不同类型的数据线转换为同一类型后再进行运算,转换的原则为:

操作数1

操作数2

转换后的类型

byte 、short、int

byte 、short、int

int

byte 、short、int

long

long

byte 、short、int、long

float

folat

byte 、short、int、long、float

double

double

char

int

int

当发生上述的运算时就会进行自动类型转换,转换结果如上;

而强制类型转换是不管是什么类型都可以将其转换为其他的类型(可能会出错),格式如下:

(想转换为的类型)类型变量;

例如:int a=(int)1.2;

这样做可能会造成精度的丢失,还有有些类型是不可以相互转换的,这样的话就会出错,可以强制类型转换的前提是要可以相互转换。例如boolean是不能进行类型转换的。

隐式类型转换

隐式类型是这样一种现象,前面我们说到整数是默认为int型的,如果没有做其他优化的话 byte a=3;是有错误的,但是实际上这句话是可以正常编译的,这是因为虚拟机做了隐式类型转换,当我们将一个整数赋值给byte、short、char类型的变量时,如果该整数不超过对应变量的取值范围时就会进行隐式类型转换,隐式类型转换的前提是赋值的数是整数常量。例如:

byte a=9;//正确

int b=9; byte c=b;//错误,因为b是一个int类型的变量

常见错误举例

例如:byte a=1;

         a=a+1;//错误,因为等号右边已经转换为了int类型,而左边为byte类型

       a+=1;//正确,这句话等效于a=(byte)(a+1);

例如:

byte a=3+4;//正确,编译时先算出3+4等于10,再进行隐式类型转换

byte b=3; byte c=4;

byte d=b+c;//错误,因为在计算是就会发生自动类型转换将等式右边转换为int,见上面表格第一行;

大家有如有遇到基本类型数据相关问题的欢迎留言

心有多大,天有多高,一起奋斗!!
原文地址:https://www.cnblogs.com/zhaolei1996/p/11094058.html