/**
* java 语言规范 基于 java 8 —— 类型转换和上下文
* @转换的种类
* 用java语言编写的表达式要么不产生任何结果,要么有一个可以在编译时推断出来的类型。
* 当表达式出现在多数的上下文中时,它必须与该上下文所期望的类型相兼容,这个类型被称为目标类型。
* @表达式与周围上下文兼容的实现
* @对于被称为合成表达式的表达式,推断出来的类型可能受到目标类型的影响。
* 因此相同的表达式可能在不同的上下文中会有不同的类型。
* @在表达式的类型被推断出来后,会执行表达式类型到目标类型的隐式类型转换
* 如果这个两个实现都不能确定兼容类型,则抛出编译时错误。
*
* @java中执行特定转换的宽泛种类
* @标识转换
* 任何一种类型转换为同一种类型都是允许的。
*
* 基本类型宽泛转化 int -> long
* 精度丢失
* 基本类型窄化 long -> int
* 精度丢失
* 引用类型宽化 子类 到 父类
* 子类 向上转
* 引用类型窄化 父类 到 子类
* Object 窄化子类
* 拆箱 Integer -> int
* 装箱 int -> Integer
* 非受检查转
* 泛型化过程
* 类或接口泛型G<T1,……,TN>中元素类型的非受检转换
*
* 捕获转化 异常
* 从集合泛型转换到另一个泛型的捕获转换。
* G<A> TO G<B>
*
* 字符串转化 String > int
* 注意 null 会被转换为 “null”
*
* 被禁止的转换
* 任何不是明确允许的转化都是被禁止转换
*
* 值集转化
* 将一个值集中的浮点值映射到另一个值集,但是不改变其类型过程。
*
* @6种转化上下文
* @赋值上下文
* 表达式的值被绑定到某个具体的变量名上。
* 可以拓宽简单简单类型和引用类型,值可以拆箱和装箱,可以窄化常量表,进行非受检转化
* 允许将表达式的值赋值给变量,表达式的类型必须转换为变量的类型
*
* @严格的调用上下文
* 参数被绑定到构造器或者方法的形参上。
* 拓宽简单和引用类型和非受检转化
*
* @宽泛的的调用上下文
* 引元被绑定到行参上。
* 拆箱,装箱,受检和拓宽转换。
*
* @字符串上下文
* 任何类型的值都会被转换为String类对象
*
* @强制类型转换上下文
* 表达式的值被转换为由强制类型转换操作符显示指定的类型。
* 允许除了字符串转换之外的其他转换
* 但是在运行时会检查某些强制类型转换到引用类型操作的正确性。
*
* @数字上下文
* 数字型操作符的操作数会拓宽为公共类型,确保操作可以执行。
*/
java 语言规范 基于 java 8 —— 类型转换和上下文
最新推荐文章于 2024-05-16 10:23:10 发布