数据类型之间的转换
-
float 与 double:
Java 不能隐式执行向下转型,因为这会使得精度降低,但是可以向上转型
-
隐士转换类型:
字面量 1 是 int 类型,比 short 类型精度要高,因此不能隐式地将 int 类型向下转型为 short 类型
使用 += 或者 ++ 运算符会执行类型转换:
引用类型
引用数据类型:类,接口,数组都是引用数据类型,又叫包装类
包装类的作用:
- 包装类作为类首先拥有了 Object 类的方法
- 包装类作为引用类型的变量可以存储 null 值
基本数据类型 包装类(引用数据类型)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
Java 为包装类做了一些特殊功能,具体来看特殊功能主要有:
-
可以把基本数据类型的值转换成字符串类型的值
- 调用 toString() 方法
- 调用 Integer.toString(基本数据类型的值) 得到字符串
- 直接把基本数据类型 + 空字符串就得到了字符串(推荐使用)
-
把字符串类型的数值转换成对应的基本数据类型的值(重要)
- Xxx.parseXxx("字符串类型的数值") →
Integer.parseInt(numStr) - Xxx.valueOf("字符串类型的数值") →
Integer.valueOf(numStr)(推荐使用)
- Xxx.parseXxx("字符串类型的数值") →
类型对比
-
有了基本数据类型,为什么还要引用数据类型?
引用数据类型封装了数据和处理该数据的方法,比如 Integer.parseInt(String) 就是将 String 字符类型数据转换为 Integer 整型
Java 中大部分类和方法都是针对引用数据类型,包括泛型和集合
-
引用数据类型那么好,为什么还用基本数据类型?
引用类型的对象要多储存对象头,对基本数据类型来说空间浪费率太高。逻辑上来讲,Java 只有包装类就够了,为了运行速度,需要用到基本数据类型;优先考虑运行效率的问题,所以二者同时存在是合乎情理的
-
Java 集合不能存放基本数据类型,只存放对象的引用?
不能放基本数据类型是因为不是 Object 的子类。泛型思想,如果不用泛型要写很多参数类型不同的但功能相同的函数(方法重载)
-
==
== 比较基本数据类型:比较的是具体的值 == 比较引用数据类型:比较的是对象地址值
本文正在参加「金石计划 . 瓜分6万现金大奖」