Java基本数据类型——Java基本数据类型汇总、自动类型转换(指导图)、强制类型转型乱码问题、运算时类型提升容易犯的错误常见问题汇总
2017-10-04 22:23
651 查看
1、Java基本数据类型及其表示范围
数据类型 | 占用存储空间 | 表示范围 |
---|---|---|
byte | 1字节 | −27~(27−1) 即-128~127 |
short | 2字节 | −215~(215−1) 即-32768~32767 |
int | 4字节 | −231~(231−1) 约正负21亿 |
long | 8字节 | −263~(263−1) 大约可以表示人类上下五千年的米的数量 |
float | 4字节 | (−3.403∗1038)~(3.403∗1038) 比long要大 |
double | 8字节 | (−1.798∗10308)~(1.798∗10308) |
float | 4字节 | (−3.403∗1038)~(3.403∗1038) 比long要大 |
char | 2字节 | 0~65535 内部采用Unicode编码 |
boolean | 1位 | true 或者 false |
BigInteger | 可以表示大于long类型的整数 | |
BigDecimal | 可以表示精确的浮点数,避免浮点数的误差问题 |
2、自动类型转换
a、容量小的可以自动转化为容量大的类型b、特例:整数类型可以直接赋值给byte、short、char等类型常量,而不需要强制类型转化,只要不超过他们的范围
*注意:
1、注意图中红色的部分虽然能够自动转型但是会有精度丢失
测试截图:
3、强制类型转化
除了上图中会发生自动转化的类型外,其他的都需要强制类型转化,例如
int b = (int) 1000L;
由于long类型是8个字节,int 为 4个字节,从int转化为long可能会损失精度,所以需要强制类型转化
*注意:
强制类型转化乱码问题
如果强转转化之后的数值超过了目标类型,例如下面这个程序70000已经超过char类型的表示范围,这是运行时虽然不会报错,但是输出结果会没有意义,因为它已经超出了指定的内存范围,因此它超出后便会指向一块没有意义的内存地址@org.junit.Test public void test2() { char c = (char) 70000; System.out.println(c); }
程序执行结果:
4、运算时类型提升问题
我们通过几个例子来说明类型提升问题@Test public void test02() { int a = 100; long b = 200; int c = (int) (a+b); System.out.println(c); }
由于a是int类型,b 是 long类型,a+b的结果就会被提升较高的类型long,所以要进行
int c = (int)(a+b)的强制类型转化
类型提升问题容易犯的错误
我们还是通过程序来举一个例子:*注意:
1、上图中的1_000是java7的新特性等同于1000是为了便于观看用的
2、由于Eclipse默认的整数类型是int类型,在前三个数相乘的时候都是int类型之间的乘法,在乘以第四个long类型之前,即在发生类型提升之前就已经超出了int类型的范围,所以输出结果结果就会是一个没有意义的负值,解决方法就是将L放在最前一个数,保证一开始就进行了类型提升
相关文章推荐
- java学习之旅10--基本数据类型自动转换_强制转型_类型提升问题
- 10_基本数据类型自动转换_强制转型_类型提升问题
- 2.4-全栈Java笔记:基本类型转化及常见错误和问题
- Java基本数据类型自动转型溢出问题
- Java基础之基本数据类型容易忽略的问题
- java基本数据类型之间赋值与运算归纳
- java基本数据类型的多重转型
- Java第一课 Java的一些基本概念,Java的起源、为什么我们要学习Java语言,Java跨平台原理剖析;Java环境变量的配置,初学者常犯的问题,Java语言的基本数据类型和Java的语句。
- JAVA 基本数据类型与运算
- java中不同类型数据运算时转换问题
- Java练习题--基本数据类型运算
- java基础复习1--基本数据类型、运算符号、表达式语句与程序结构
- 在Java中byte类型数据在运算的问题
- (集合和引用类型、基本数据类型赋值不一样)一个简单的java问题 先后的赋值问题
- java学习之旅45--面向对象_18_多态_基本概念_强制转型问题_instanceof运算符
- Java解析DBF文件,错误Failed to parse Number: For input string: "-.---" 或读取不出数据或乱码问题都在这里解决
- 【Java学习笔记】基础知识学习1【基本输出,数据类型,基础运算符号】
- 在Java中byte类型数据在运算的问题
- java基础编程中常见的错误(基本类型)
- 马士兵Java课堂笔记-2-基本数据类型转换问题