失效链接处理 |
java灵魂13问 PDF 下载
本站整理下载:
相关截图:
![]()
主要内容:
可能有些人看过我之前那篇文章,本文并不是单纯的”旧瓶装新酒”,在重新梳
理这个知识点的时候,作者重新翻阅了《The Java Language Specification》,并
且对比了 Java SE 7 和 Java SE 8 之后的相关变化,希望可以帮助大家更加全面的
理解这个问题。
基础回顾
在详细展看介绍之前,先简单介绍下本文要涉及到的几个重要概念,分别是”三
目运算符”、”自动拆装箱”等,如果大家对于这些历史知识有所掌握的话,可以先跳
过本段内容,直接看问题重现部分即可。
三目运算符
在《The Java Language Specification》 中, 三 目 运 算 符 的 官 方 名 称 是
Conditional Operator ? : ,我一般称呼他为条件表达式,详细介绍在 JLS
15.25 中,这里简单介绍下其基本形式和用法:
三目运算符是 Java 语言中的重要组成部分,它也是唯一有 3 个操作数的运算
符。形式为:
< 表达式 1> ? < 表达式 2> : < 表达式 3>
以上,通过?、:组合的形式得到一个条件表达式。其中?运算符的含义是:先
求表达式 1 的值,如果为真,则执行并返回表达式 2 的结果;如果表达式 1 的值为
假,则执行并返回表达式 3 的结果。
值得注意的是,一个条件表达式从不会既计算 < 表达式 2>,又计算 < 表达式
3>。条件运算符是右结合的,也就是说,从右向左分组计算。例如,a?b:c?d:e 将按
a?b:(c?d:e)执行。
6 > 《新版 Java 开发手册》提到的三目运算符的空指针问题到底是个怎么回事?
自动装箱与自动拆箱
介绍过了三目运算符(条件表达式)之后,我们再来简单介绍下 Java 中的自动
拆装箱相关知识点。
每一个 Java 开发者一定都对 Java 中的基本数据类型不陌生,Java 中共有 8
种基本数据类型,这些基础数据类型带来一个好处就是他们直接在栈内存中存储,不
会在堆上分配内存,使用起来更加高效。
但是,Java 语言是一个面向对象的语言,而基本数据类型不是对象,导致在实
际使用过程中有诸多不便,如集合类要求其内部元素必须是 Object 类型,基本数据
类型就无法使用。
所以,相对应的,Java 提供了 8 种包装类型,更加方便在需要对象的地方使用。
有了基本数据类型和包装类,带来了一个麻烦就是需要在他们之间进行转换。在
Java SE5 中,为了减少开发人员的工作,Java 提供了自动拆箱与自动装箱功能。
自动装箱 : 就是将基本数据类型自动转换成对应的包装类。
自动拆箱:就是将包装类自动转换成对应的基本数据类型。
|