美文网首页
Java基本数据类型

Java基本数据类型

作者: Amy木婉清 | 来源:发表于2021-03-15 10:27 被阅读0次
image.png
8种基本数据类型:Java语言有8种基本数据类型,分别用于存储整数、浮点数、字符数据和布尔类型数据
image.png
image.png
10开头十进制;0x开头十六进制;0开头八进制
image.png
整型数据的除法运算中的取整

两个整数相除,会舍弃小数的部分(不是四舍五入),结果也是整数。


image.png
运算时要防止溢出的发生

整数运算的溢出:两个整数进行运算时,其结果可能会超过整数的范围而溢出。


image.png
直接量超范围为编译错误,运算时超范围为溢出
image.png
BigInteger没有上下限
long建议以L结尾
long b = 1000000000000L
long类型

在表示整数时,如果int类型的范围不够,可以使用long型,一个long型的变量占用8个字节(64位),最大范围表示:


image.png

如果要表示long直接量,需要以L或l结尾。
示例:
long a = 1000000000000;//会有编译错误
long b = 1000000000000l;
两个不一样的数据类型进行运算,计算机自动往大的类型转换。


image.png
整型最大范围是21多亿万,所以溢出
double运算时会出现舍入误差

2进制系统中无法精确的表示1/10,就好像十进制系统无法精确的表示1/3一样。所以,2进制表示10进制会有一些舍入误差,对于一些要求精确运算的场合会导致代码的缺陷。

double money = 3.0;
double price = 2.9;
System.out.println(money-price);
//输出的结果是:0.10000000000000009

如果需要精确的运算可以考虑放弃使用double或float而采用BigDecimal类来实现

使用boolean变量进行关系运算

boolean类型适用于逻辑运算,表示某个条件是否成立。一般用于程序的流程控制。
boolean类型只允许取值true或false,true表示条件成立而false表示条件不成立。
boolean型变量经常用于存储关系运算的结果,所谓关系运算就是比较两个变量的大小相等关系。

int age  =18;
boolean isChild = age<16; //isChild值为false
System.out.println(isChild);
boolean running = true;
boolean closed = false;
char类型

字符类型事实上是一个16位无符号整数,这个值是对应字符的编码。
Java字符类型采用Unicode字符集编码。Unicode是世界通用的定长字符集,所有的字符都是16位。
字符直接量可以采用诸如:的形式,也可以采用16进制的表示形式,例如\u4e2d

char c1 = `中`;//c1存的是“中”的编码
char c2 = `\u4e2d`;
System.out.println(c1 );
System.out.println(c2 );

`4e2d` 为`中`对应的16位Unicode编码的16进制表示形式
‘a’ ----97 ‘A’----65 ‘0’---48
字符直接量必须放在单引号中,只能有一个
特殊符号需要通过\来转义
基本数据类型间的转换:
从小到大依次为:
byte short int long float double char
两种方式:
自动类型转换:小类型到大类型
强制类型转换:大类型到小类型

image.png
基本类型间转换

不同的基本类型直接可以相互转换:
自动类型转换(隐式类型转换):从小类型到大类型可以自动完成。类型的大小关系如下图所示:


image.png

强制转换:从大类型到小类型需要强制转换符:
(需要转换成的类型)变量
但这样转换有可能会造成精度损失或者溢出。

强制转换时的精度丧失和溢出

基本类型转换示例,注意强制转换时可能会造成的精度丧失和溢出。

int a = 100;
int b = 200;
long c = a+b; //自动将int转换为long

long l1 = 1024l;
int i = (int)l1;//需要加强制转换符,由于1024在int 范围内没有产生溢出

long  l = 1024L*1024*4;
int j = (int) l;//会产生溢出
System.out.println(j); //结果为0;

double pi = 4.1415926535897932384;
float f = (float)pi; //会造成精度的损失
System.out.println(f); //结果为3.1415927

整数类型小数部分直接舍弃,小数之间转换,会四舍五入进位

数值运算时的自动转换

多种基本类型参与的表达式运算中,运算结果会自动的向较大的类型进行转换:

//由于有long型的直接量参与,整个表达式的结果为long
long distance =  10000*365*24*299792458l;
//由于有double型的直接量599.0参与,整个表达式的结果为double
double change = 800-599.0;
double persent1 = 80/100;
//结果为0.0,右边都是int型数据运算结果也为int类型,结果为0,再赋值给double型,将0转换为0.0

double percent2 = 80.0/100;
//结果为0.8,右边表达式有double型直接参与,运算结果也为double型
byte char short 转换为int

byte char short 三种类型实际存储的数据都是整数,在实际使用中遵循如下规则:
int直接量可以直接赋值给byte、char和short,只要不超过其表示范围
byte char shotrt 三种类型参与运算时,先一律转换成int类型在进行运算
Scanner:接收用户输入。整数、小数、长整型、短整型等能点出来的都可以

相关文章

网友评论

      本文标题:Java基本数据类型

      本文链接:https://www.haomeiwen.com/subject/rdvzqltx.html