知识屋:更实用的电脑技术知识网站
所在位置:首页 > 教育

Java 八大基本数据类型详细整理及类型转换解析

发表时间:2022-03-26来源:网络

数据类型

概述

数据类型: Java是一门强类型语言,针对每一种数据都提供了对应的类型

数据类型的分类

八大基本数据类型
整数类型    字节数    取值范围
byte     1      -128~127
short     2     -32768 ~ 32767
int      4     -2^31 ~ 2^31 - 1
long     8     -2^63 ~ 2^63 - 1

小数类型
float      4     -3.403E38 ~ 3.403E38
double     8     -1.798E308~1.798E308

注意:

1.虽然小数表示的范围特别大,但是永远不能够存储所有的小数,因为小数存在无限不循环小数 2.同样是4/8个字节的小数类型取值范围大于整数类型,原因是小数和整数的存储形式不一样 3.在处理金融相关项目的时候,小数的计算要求精度非常高,那么使用float或者double来表示会出现精度问题,后期考虑使用BigDecimal来处理

布尔类型
boolean     1     false true

字符类型
char       2     0 ~ 65535 【Java使用Unicode编码的范围】

引用数据类型
类 (class) String
接口 (interface)
数组 ([])

代码示例

public class DataTypeDemo { public static void main(String[] args){ // 定义一个byte类型的变量 byte by = 20; System.out.println(by); // by = 130; // -128~127 // System.out.println(by); // short s = 32768; // System.out.println(s); long l = 1111111111111111111L; System.out.println(l); float f = 2.5f; System.out.println(f); double d = 3.5; System.out.println(d); boolean bool = false; System.out.println(bool); // bool = 0b00000001; // System.out.println(bool); char ch = 'a'; System.out.println(ch); } }

类型转换

概述

数据类型转换
当运算符两边类型不一致的时候,需要进行类型转换
类型转换的依据: 取决数据的取值范围

从上图可以观察出以下注意事项:
1.boolean类型不能够参与类型转换
2.char和byte/short只有交集关系,没有子集关系
3.数据类型的数据范围顺序:
byte -> short -> int -> long -> float -> double
char ->

类型转换常见的9中情况

1.自动类型转换 大类型数据 = 小类型数据
将小类型的数据转换成大类型数据,系统会自动转换

2.强制类型转换 小类型数据 = 大类型数据
将大类型的数据转换成小类型的数据,会编译报错
解决办法: 强制类型转换

格式:
目标类型 变量名 = (目标类型) 被转换的类型;

强制类型转换会出现的问题:
1.精度的丢失
2.数据的溢出
3.byte/short/char特例
4.byte/short 和 char 参与转换,都需要强制类型转换
5.表达式类型提升
当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换
6.当byte short char 之间参与运算的时候,底层都会转换成int类型来计算
7.boolean类型不能够参与运算和转换
8.字符串在参与运算中的转换问题,字符串相加是拼接操作
9.变量计算和常量计算问题
变量相加,编译器无法判断具体的结果
常量相加,在编译时期,系统就会运算结果

代码示例

public class DataTypeConvertDemo { public static void main(String[] args){ // 1.自动类型转换 double d = 2.5f; System.out.println(d); // 2.强制类型转换 double d2 = 2.6; // int i = d2; // 不兼容的类型: 从double转换到int可能会有损失 // 目标类型 变量名 = (目标类型) 被转换的类型; int i = (int)d2; // 1.精度的丢失 System.out.println(i); // 2.数据的溢出 // byte by = 128; // 不兼容的类型: 从int转换到byte可能会有损失 byte by = (byte)129; // -127 System.out.println(by); // 3.byte/short/char特例 // 由于120正好在byte的范围内,所以编译帮助我们做了这个转换 // 但是如果一旦超出了byte的范围,那么系统就不会帮助我们转换,会出错 byte by2 = 120; System.out.println(by2); short s = 32767; System.out.println(s); // 97 正好在char的范围【0~65535】内,所以系统会帮助我们转换 char ch = 97; System.out.println(ch); // 4.byte/short 和 char 参与转换,都需要强制类型转换 byte by3 = 97; char ch2 = (char)by3; System.out.println(ch2); char ch3 = 'b'; byte by4 = (byte)ch3; System.out.println(by4); // 5.表达式类型提升 // 当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换 int i2 = 100; // i2 = i2 + 2.5; // 不兼容的类型: 从double转换到int可能会有损失 i2 = (int)(i2 + 2.5); System.out.println(i2); // 6.当byte short char 之间参与运算的时候,底层都会转换成int类型来计算 // 其实Java是强语言类型,针对整数类型划分出来很多类型【byte short int char】, // 其实在其他语言里面只有整数和小数, Java针对【byte short int char】计算都是先转换成同一种类型int类型再进行运算 short ss = 25; byte bb = 30; ss = (short)(bb + ss); // 不兼容的类型: 从int转换到short可能会有损失 System.out.println(ss); char ch4 = 'a'; byte by5 = 1; char ch5 = (char)(ch4 + by5); // 错误: 不兼容的类型: 从int转换到char可能会有损失 System.out.println(ch5); char ch6 = 'a'; byte by6 = 98; System.out.println(ch6
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜