运算符:布尔
编辑运算符:布尔
编辑布尔非运算符
编辑使用 布尔非运算符 '!'
来对 boolean
类型的值进行 NOT 运算,其中 true
会被翻转为 false
,而 false
会被翻转为 true
。
错误
- 如果给定的值不是
boolean
类型的值,或者不是可以转换为boolean
类型的值,则会发生错误。
真值表
原始值 | 结果 |
---|---|
true |
false |
false |
true |
语法
boolean_not: '!' expression;
示例
-
对
boolean
类型使用布尔非运算。 -
对
def
类型使用布尔非运算。
大于运算符
编辑使用 大于运算符 '>'
来比较两个数值类型的值,如果左侧的值大于右侧的值,则结果 boolean
类型值为 true
,否则为 false
。
错误
- 如果左侧或右侧的求值结果为非数值类型的值,则会发生错误。
语法
greater_than: expression '>' expression;
类型提升
byte |
short |
char |
int |
long |
float |
double |
def |
|
byte |
int |
int |
int |
int |
long |
float |
double |
def |
short |
int |
int |
int |
int |
long |
float |
double |
def |
char |
int |
int |
int |
int |
long |
float |
double |
def |
int |
int |
int |
int |
int |
long |
float |
double |
def |
long |
long |
long |
long |
long |
long |
float |
double |
def |
float |
float |
float |
float |
float |
float |
float |
double |
def |
double |
double |
double |
double |
double |
double |
double |
double |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
示例
-
对不同的数值类型使用大于运算符。
-
对
def
类型使用大于运算符。声明
int x
;将int 5
存储到x
声明
def y
;隐式将double 7.0
转换为def
→def
;将def
存储到y
声明
def z
;从y
加载 →def
;隐式将def
转换为double 7.0
→double 7.0
;大于double 7.0
和double 6.5
→boolean true
;隐式将boolean true
转换为def
→def
;将def
存储到z
声明
def a
;从y
加载 →def
;隐式将def
转换为double 7.0
→double 7.0
;从x
加载 →int 5
;提升int 5
和double 7.0
:结果为double
;隐式将int 5
转换为double 5.0
→double 5.0
;大于double 5.0
和double 7.0
→boolean false
;隐式将boolean false
转换为def
→def
;将def
存储到z
大于等于运算符
编辑使用 大于等于运算符 '>='
来比较两个数值类型的值,如果左侧的值大于或等于右侧的值,则结果 boolean
类型值为 true
,否则为 false
。
错误
- 如果左侧或右侧的求值结果为非数值类型的值,则会发生错误。
语法
greater_than_or_equal: expression '>=' expression;
类型提升
byte |
short |
char |
int |
long |
float |
double |
def |
|
byte |
int |
int |
int |
int |
long |
float |
double |
def |
short |
int |
int |
int |
int |
long |
float |
double |
def |
char |
int |
int |
int |
int |
long |
float |
double |
def |
int |
int |
int |
int |
int |
long |
float |
double |
def |
long |
long |
long |
long |
long |
long |
float |
double |
def |
float |
float |
float |
float |
float |
float |
float |
double |
def |
double |
double |
double |
double |
double |
double |
double |
double |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
示例
-
对不同的数值类型使用大于等于运算符。
-
对
def
类型使用大于等于运算符。声明
int x
;将int 5
存储到x
;声明
def y
;隐式将double 7.0
转换为def
→def
;将def
存储到y
声明
def z
;从y
加载 →def
;隐式将def
转换为double 7.0 @0
→double 7.0 @0
;大于等于double 7.0 @0
和double 7.0 @1
→boolean true
;隐式将boolean true
转换为def
→def
;将def
存储到z
声明
def a
;从y
加载 →def
;隐式将def
转换为double 7.0
→double 7.0
;从x
加载 →int 5
;提升int 5
和double 7.0
:结果为double
;隐式将int 5
转换为double 5.0
→double 5.0
;大于等于double 5.0
和double 7.0
→boolean false
;隐式将boolean false
转换为def
→def
;将def
存储到z
小于运算符
编辑使用 小于运算符 '<'
来比较两个数值类型的值,如果左侧的值小于右侧的值,则结果 boolean
类型值为 true
,否则为 false
。
错误
- 如果左侧或右侧的求值结果为非数值类型的值,则会发生错误。
语法
less_than: expression '<' expression;
类型提升
byte |
short |
char |
int |
long |
float |
double |
def |
|
byte |
int |
int |
int |
int |
long |
float |
double |
def |
short |
int |
int |
int |
int |
long |
float |
double |
def |
char |
int |
int |
int |
int |
long |
float |
double |
def |
int |
int |
int |
int |
int |
long |
float |
double |
def |
long |
long |
long |
long |
long |
long |
float |
double |
def |
float |
float |
float |
float |
float |
float |
float |
double |
def |
double |
double |
double |
double |
double |
double |
double |
double |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
示例
-
对不同的数值类型使用小于运算符。
-
对
def
类型使用小于运算符。声明
int x
;将int 5
存储到x
声明
def y
;隐式将double 7.0
转换为def
→def
;将def
存储到y
声明
def z
;从y
加载 →def
;隐式将def
转换为double 7.0
→double 7.0
;小于double 7.0
和double 6.5
→boolean false
;隐式将boolean false
转换为def
→def
;将def
存储到z
声明
def a
;从y
加载 →def
;隐式将def
转换为double 7.0
→double 7.0
;从x
加载 →int 5
;提升int 5
和double 7.0
:结果为double
;隐式将int 5
转换为double 5.0
→double 5.0
;小于double 5.0
和double 7.0
→boolean true
;隐式将boolean true
转换为def
→def
;将def
存储到z
小于等于运算符
编辑使用 小于等于运算符 '<='
来比较两个数值类型的值,如果左侧的值小于或等于右侧的值,则结果 boolean
类型值为 true
,否则为 false
。
错误
- 如果左侧或右侧的求值结果为非数值类型的值,则会发生错误。
语法
greater_than_or_equal: expression '<=' expression;
类型提升
byte |
short |
char |
int |
long |
float |
double |
def |
|
byte |
int |
int |
int |
int |
long |
float |
double |
def |
short |
int |
int |
int |
int |
long |
float |
double |
def |
char |
int |
int |
int |
int |
long |
float |
double |
def |
int |
int |
int |
int |
int |
long |
float |
double |
def |
long |
long |
long |
long |
long |
long |
float |
double |
def |
float |
float |
float |
float |
float |
float |
float |
double |
def |
double |
double |
double |
double |
double |
double |
double |
double |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
示例
-
对不同的数值类型使用小于等于运算符。
-
对
def
类型使用小于等于运算符。声明
int x
;将int 5
存储到x
;声明
def y
;隐式将double 7.0
转换为def
→def
;将def
存储到y
;声明
def z
;从y
加载 →def
;隐式转换def
为double 7.0 @0
→double 7.0 @0
;小于等于double 7.0 @0
和double 7.0 @1
→boolean true
;隐式转换boolean true
为def
→def
;存储def
到z
声明
def a
;从y
加载 →def
;隐式转换def
为double 7.0
→double 7.0
;从x
加载 →int 5
;提升int 5
和double 7.0
:结果为double
;隐式转换int 5
为double 5.0
→double 5.0
;小于等于double 5.0
和double 7.0
→boolean true
;隐式转换boolean true
为def
→def
;存储def
到z
Instanceof
编辑使用 instanceof 运算符
来比较变量/字段的类型与指定的引用类型,使用引用类型名称,如果变量/字段类型与指定的引用类型相同或为指定引用类型的子类,则结果 boolean
类型值为 true
,否则为 false。
错误
- 如果右侧指定的引用类型名称不存在。
语法
instance_of: ID 'instanceof' TYPE;
示例
-
使用不同引用类型的 Instanceof。
声明
Map m
;分配HashMap
实例 →HashMap 引用
;隐式转换HashMap 引用
为Map 引用
;存储Map 引用
到m
声明
boolean a
;从m
加载 →Map 引用
;隐式转换Map 引用
为HashMap 引用
→HashMap 引用
;instanceofHashMap 引用
和HashMap
→boolean true
;存储boolean true
到a
声明
boolean b
;从m
加载 →Map 引用
;隐式转换Map 引用
为HashMap 引用
→HashMap 引用
;instanceofHashMap 引用
和Map
→boolean true
;存储true
到b
;(注意HashMap
是Map
的子类) -
使用
def
类型的 Instanceof。声明
def d
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为def
→def
;存储def
到d
声明
boolean a
;从d
加载 →def
;隐式转换def
为ArrayList 引用
→ArrayList 引用
;instanceofArrayList 引用
和List
→boolean true
;存储boolean true
到a
;(注意ArrayList
是List
的子类)声明
boolean b
;从d
加载 →def
;隐式转换def
为ArrayList 引用
→ArrayList 引用
;instanceofArrayList 引用
和Map
→boolean false
;存储boolean false
到a
;(注意ArrayList
不是Map
的子类)
相等等于
编辑使用 相等等于运算符 '=='
来比较两个值,如果两个值相等,则结果 boolean
类型值为 true
,否则为 false
。当值为引用类型值时,会隐式调用成员方法 equals
,其中第一个值是调用的目标,第二个值是参数。此操作是空安全的,如果两个值都为 null
,则结果 boolean
类型值为 true
,如果只有一个值为 null
,则结果 boolean
类型值为 false
。有效的比较是在 boolean
类型值、数值类型值或引用类型值之间进行。
错误
- 如果在
boolean
类型值和数值类型值之间进行比较。 - 如果在原始类型值和引用类型值之间进行比较。
语法
equality_equals: expression '==' expression;
类型提升
布尔值 |
byte |
short |
char |
int |
long |
float |
double |
引用 |
def |
|
布尔值 |
布尔值 |
- |
- |
- |
- |
- |
- |
- |
- |
def |
byte |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
short |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
char |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
int |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
long |
- |
long |
long |
long |
long |
long |
float |
double |
- |
def |
float |
- |
float |
float |
float |
float |
float |
float |
double |
- |
def |
double |
- |
double |
double |
double |
double |
double |
double |
double |
- |
def |
引用 |
- |
- |
- |
- |
- |
- |
- |
- |
对象 |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
示例
-
使用
boolean
类型的相等等于。 -
使用原始类型的相等等于。
声明
int a
;存储int 1
到a
声明
double b
;存储double 1.0
到b
声明
boolean c
;从a
加载 →int 1
;从b
加载 →double 2.0
;提升int 1
和double 2.0
:结果为double
;隐式转换int 1
为double 1.0
→double `1.0
;相等等于double 1.0
和double 2.0
→boolean false
;存储boolean false
到c
从
a
加载 →int 1 @1
;相等等于int 1 @0
和int 1 @1
→boolean true
;存储boolean true
到c
-
使用引用类型的相等等于。
List a = new ArrayList(); List b = new ArrayList(); a.add(1); boolean c = a == b; b.add(1); c = a == b;
声明
List a
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为List 引用
→List 引用
;存储List 引用
到a
声明
List b
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为List 引用
→List 引用
;存储List 引用
到b
从
a
加载 →List 引用
;调用add
在List 引用
上,参数为 (int 1)
声明
boolean c
;从a
加载 →List 引用 @0
;从b
加载 →List 引用 @1
;调用equals
在List 引用 @0
上,参数为 (List 引用 @1
) →boolean false
;存储boolean false
到c
从
b
加载 →List 引用
;调用add
在List 引用
上,参数为 (int 1
)从
a
加载 →List 引用 @0
;从b
加载 →List 引用 @1
;调用equals
在List 引用 @0
上,参数为 (List 引用 @1
) →boolean true
;存储boolean true
到c
-
使用
null
的相等等于。声明
Object a
;存储null
到a
声明
Object b
;存储null
到b
声明
boolean c
;从a
加载 →null @0
;相等等于null @0
和null @1
→boolean true
;存储boolean true
到c
从
a
加载 →null @0
;从b
加载 →null @1
;相等等于null @0
和null @1
→boolean true
;存储boolean true
到c
分配
Object
实例 →Object 引用
;存储Object 引用
到b
从
a
加载 →Object 引用
;从b
加载 →null
;调用equals
在Object 引用
上,参数为 (null
) →boolean false
;存储boolean false
到c
-
使用
def
类型的相等等于。def a = 0; def b = 1; boolean c = a == b; def d = new HashMap(); def e = new ArrayList(); c = d == e;
声明
def a
;隐式转换int 0
为def
→def
;存储def
到a
;声明
def b
;隐式转换int 1
为def
→def
;存储def
到b
;声明
boolean c
;从a
加载 →def
;隐式将a
转换为int 0
→int 0
;从b
加载 →def
;隐式将b
转换为int 1
→int 1
;相等比较int 0
和int 1
→boolean false
;将boolean false
存储到c
声明
def d
;分配HashMap
实例 →HashMap 引用
;隐式将HashMap 引用
转换为def
→def
;将def
存储到d
;声明
def e
;分配ArrayList
实例 →ArrayList 引用
;隐式将ArrayList 引用
转换为def
→def
;将def
存储到d
;从
d
加载 →def
;隐式将def
转换为HashMap 引用
→HashMap 引用
;从e
加载 →def
;隐式将def
转换为ArrayList 引用
→ArrayList 引用
;调用HashMap 引用
的equals
方法,参数为 (ArrayList 引用
) →boolean false
;将boolean false
存储到c
不等于运算符
编辑使用 不等于运算符 '!='
来比较两个值,如果两个值不相等,则结果为 boolean
类型的 true
,否则为 false
。当值为引用类型时,会隐式调用成员方法 equals
,其中第一个值为调用目标,第二个值为参数,结果 boolean
值取反。此操作是 null 安全的
,如果两个值都为 null
,则结果 boolean
类型值为 false
,如果只有一个值为 null
,则结果 boolean
类型值为 true
。合法的比较是 boolean 类型值、数值类型值或引用类型值之间的比较。
错误
- 如果在
boolean
类型值和数值类型值之间进行比较。 - 如果在原始类型值和引用类型值之间进行比较。
语法
equality_not_equals: expression '!=' expression;
类型提升
布尔值 |
byte |
short |
char |
int |
long |
float |
double |
引用 |
def |
|
布尔值 |
布尔值 |
- |
- |
- |
- |
- |
- |
- |
- |
def |
byte |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
short |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
char |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
int |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
long |
- |
long |
long |
long |
long |
long |
float |
double |
- |
def |
float |
- |
float |
float |
float |
float |
float |
float |
double |
- |
def |
double |
- |
double |
double |
double |
double |
double |
double |
double |
- |
def |
引用 |
- |
- |
- |
- |
- |
- |
- |
- |
对象 |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
示例
-
使用
boolean
类型进行不等于比较。 -
使用基本类型进行不等于比较。
声明
int a
;存储int 1
到a
声明
double b
;存储double 1.0
到b
声明
boolean c
;从a
加载 →int 1
;从b
加载 →double 2.0
;提升int 1
和double 2.0
:结果为double
;隐式将int 1
转换为double 1.0
→double `1.0
;不等于比较double 1.0
和double 2.0
→boolean true
;将boolean true
存储到c
从
a
加载 →int 1 @1
;不等于比较int 1 @0
和int 1 @1
→boolean false
;将boolean false
存储到c
-
使用引用类型进行不等于比较。
List a = new ArrayList(); List b = new ArrayList(); a.add(1); boolean c = a == b; b.add(1); c = a == b;
声明
List a
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为List 引用
→List 引用
;存储List 引用
到a
声明
List b
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为List 引用
→List 引用
;存储List 引用
到b
从
a
加载 →List 引用
;调用add
在List 引用
上,参数为 (int 1)
声明
boolean c
;从a
加载 →List 引用 @0
;从b
加载 →List 引用 @1
;调用List 引用 @0
的equals
方法,参数为 (List 引用 @1
) →boolean false
;boolean 非boolean false
→boolean true
;将boolean true
存储到c
从
b
加载 →List 引用
;调用add
在List 引用
上,参数为 (int 1
)从
a
加载 →List 引用 @0
;从b
加载 →List 引用 @1
;调用List 引用 @0
的equals
方法,参数为 (List 引用 @1
) →boolean true
;boolean 非boolean true
→boolean false
;将boolean false
存储到c
-
使用
null
进行不等于比较。声明
Object a
;存储null
到a
声明
Object b
;存储null
到b
声明
boolean c
;从a
加载 →null @0
;不等于比较null @0
和null @1
→boolean false
;将boolean false
存储到c
从
a
加载 →null @0
;从b
加载 →null @1
;不等于比较null @0
和null @1
→boolean false
;将boolean false
存储到c
分配
Object
实例 →Object 引用
;存储Object 引用
到b
从
a
加载 →Object 引用
;从b
加载 →null
;调用Object 引用
的equals
方法,参数为 (null
) →boolean false
;boolean 非boolean false
→boolean true
;将boolean true
存储到c
-
使用
def
类型进行不等于比较。def a = 0; def b = 1; boolean c = a == b; def d = new HashMap(); def e = new ArrayList(); c = d == e;
声明
def a
;隐式转换int 0
为def
→def
;存储def
到a
;声明
def b
;隐式转换int 1
为def
→def
;存储def
到b
;声明
boolean c
;从a
加载 →def
;隐式将a
转换为int 0
→int 0
;从b
加载 →def
;隐式将b
转换为int 1
→int 1
;相等比较int 0
和int 1
→boolean false
;将boolean false
存储到c
声明
def d
;分配HashMap
实例 →HashMap 引用
;隐式将HashMap 引用
转换为def
→def
;将def
存储到d
;声明
def e
;分配ArrayList
实例 →ArrayList 引用
;隐式将ArrayList 引用
转换为def
→def
;将def
存储到d
;从
d
加载 →def
;隐式将def
转换为HashMap 引用
→HashMap 引用
;从e
加载 →def
;隐式将def
转换为ArrayList 引用
→ArrayList 引用
;调用HashMap 引用
的equals
方法,参数为 (ArrayList 引用
) →boolean false
;将boolean false
存储到c
恒等运算符
编辑使用 恒等运算符 '==='
来比较两个值,如果两个值相等,则结果为 boolean
类型的 true
,否则为 false
。当两个引用类型值都指向堆上的同一个实例或都为 null
时,它们相等。合法的比较是 boolean
类型值、数值类型值或引用类型值之间的比较。
错误
- 如果在
boolean
类型值和数值类型值之间进行比较。 - 如果在原始类型值和引用类型值之间进行比较。
语法
identity_equals: expression '===' expression;
类型提升
布尔值 |
byte |
short |
char |
int |
long |
float |
double |
引用 |
def |
|
布尔值 |
布尔值 |
- |
- |
- |
- |
- |
- |
- |
- |
def |
byte |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
short |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
char |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
int |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
long |
- |
long |
long |
long |
long |
long |
float |
double |
- |
def |
float |
- |
float |
float |
float |
float |
float |
float |
double |
- |
def |
double |
- |
double |
double |
double |
double |
double |
double |
double |
- |
def |
引用 |
- |
- |
- |
- |
- |
- |
- |
- |
对象 |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
示例
-
使用引用类型进行恒等比较。
声明
List a
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为List 引用
→List 引用
;存储List 引用
到a
声明
List b
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为List 引用
→List 引用
;存储List 引用
到b
从
a
加载 →List 引用
;将List 引用
存储到c
声明
boolean c
;从a
加载 →List 引用 @0
;从b
加载 →List 引用 @1
;恒等比较List 引用 @0
和List 引用 @1
→boolean false
;将boolean false
存储到c
从
a
加载 →List 引用 @0
;从c
加载 →List 引用 @1
;恒等比较List 引用 @0
和List 引用 @1
→boolean true
;将boolean true
存储到c
(注意List 引用 @0
和List 引用 @1
指向同一个实例) -
使用
null
进行恒等比较。Object a = null; Object b = null; boolean c = a === null; c = a === b; b = new Object(); c = a === b;
声明
Object a
;存储null
到a
声明
Object b
;存储null
到b
声明
boolean c
;从a
加载 →null @0
;恒等比较null @0
和null @1
→boolean true
;将boolean true
存储到c
从
a
加载 →null @0
;从b
加载 →null @1
;恒等比较null @0
和null @1
→boolean true
;将boolean true
存储到c
分配
Object
实例 →Object 引用
;存储Object 引用
到b
从
a
加载 →Object 引用
;从b
加载 →null
;恒等比较Object 引用
和null
→boolean false
;将boolean false
存储到c
-
使用
def
类型进行恒等比较。声明
def d
;分配HashMap
实例 →HashMap 引用
;隐式将HashMap 引用
转换为def
→def
;将def
存储到d
声明
def e
;分配ArrayList
实例 →ArrayList 引用
;隐式将ArrayList 引用
转换为def
→def
;将def
存储到d
声明
boolean c
;从a
加载 →def
;隐式将def
转换为HashMap 引用
→HashMap 引用
;从b
加载 →def
;隐式将def
转换为ArrayList 引用
→ArrayList 引用
;恒等比较HashMap 引用
和ArrayList 引用
→boolean false
;将boolean false
存储到c
从
a
加载 →def
;将def
存储到b
从
a
加载 →def
;隐式将def
转换为HashMap 引用 @0
→HashMap 引用 @0
;从b
加载 →def
;隐式将def
转换为HashMap 引用 @1
→HashMap 引用 @1
;比较HashMap 引用 @0
和HashMap 引用 @1
的身份是否相等 →boolean true
;将boolean true
存储到b
;(注意HashMap 引用 @0
和HashMap 引用 @1
指向同一个实例)
身份不等于运算符
编辑使用 身份不等于运算符 '!=='
来比较两个值,如果两个值不相等,则结果 boolean
类型的值为 true
,否则为 false
。如果两个引用类型的值在堆上指向不同的实例,或者一个值为 null
而另一个不是,则它们不相等。有效的比较是在 boolean
类型值、数值类型值或引用类型值之间进行。
错误
- 如果在
boolean
类型值和数值类型值之间进行比较。 - 如果在原始类型值和引用类型值之间进行比较。
语法
identity_not_equals: expression '!==' expression;
类型提升
布尔值 |
byte |
short |
char |
int |
long |
float |
double |
引用 |
def |
|
布尔值 |
布尔值 |
- |
- |
- |
- |
- |
- |
- |
- |
def |
byte |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
short |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
char |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
int |
- |
int |
int |
int |
int |
long |
float |
double |
- |
def |
long |
- |
long |
long |
long |
long |
long |
float |
double |
- |
def |
float |
- |
float |
float |
float |
float |
float |
float |
double |
- |
def |
double |
- |
double |
double |
double |
double |
double |
double |
double |
- |
def |
引用 |
- |
- |
- |
- |
- |
- |
- |
- |
对象 |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
def |
示例
-
引用类型值的身份不等于。
声明
List a
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为List 引用
→List 引用
;存储List 引用
到a
声明
List b
;分配ArrayList
实例 →ArrayList 引用
;隐式转换ArrayList 引用
为List 引用
→List 引用
;存储List 引用
到b
从
a
加载 →List 引用
;将List 引用
存储到c
声明
boolean c
;从a
加载 →List 引用 @0
;从b
加载 →List 引用 @1
;比较List 引用 @0
和List 引用 @1
的身份是否不相等 →boolean true
;将boolean true
存储到c
从
a
加载 →List 引用 @0
;从c
加载 →List 引用 @1
;比较List 引用 @0
和List 引用 @1
的身份是否不相等 →boolean false
;将boolean false
存储到c
(注意List 引用 @0
和List 引用 @1
指向同一个实例) -
与
null
的身份不等于。Object a = null; Object b = null; boolean c = a !== null; c = a !== b; b = new Object(); c = a !== b;
声明
Object a
;存储null
到a
声明
Object b
;存储null
到b
声明
boolean c
;从a
加载 →null @0
;比较null @0
和null @1
的身份是否不相等 →boolean false
;将boolean false
存储到c
从
a
加载 →null @0
;从b
加载 →null @1
;比较null @0
和null @1
的身份是否不相等 →boolean false
;将boolean false
存储到c
分配
Object
实例 →Object 引用
;存储Object 引用
到b
从
a
加载 →Object 引用
;从b
加载 →null
;比较Object 引用
和null
的身份是否不相等 →boolean true
;将boolean true
存储到c
-
与
def
类型的身份不等于。声明
def d
;分配HashMap
实例 →HashMap 引用
;隐式将HashMap 引用
转换为def
→def
;将def
存储到d
声明
def e
;分配ArrayList
实例 →ArrayList 引用
;隐式将ArrayList 引用
转换为def
→def
;将def
存储到d
声明
boolean c
;从a
加载 →def
;隐式将def
转换为HashMap 引用
→HashMap 引用
;从b
加载 →def
;隐式将def
转换为ArrayList 引用
→ArrayList 引用
;比较HashMap 引用
和ArrayList 引用
的身份是否不相等 →boolean true
;将boolean true
存储到c
从
a
加载 →def
;将def
存储到b
从
a
加载 →def
;隐式将def
转换为HashMap 引用 @0
→HashMap 引用 @0
;从b
加载 →def
;隐式将def
转换为HashMap 引用 @1
→HashMap 引用 @1
;比较HashMap 引用 @0
和HashMap 引用 @1
的身份是否不相等 →boolean false
;将boolean false
存储到b
;(注意HashMap 引用 @0
和HashMap 引用 @1
指向同一个实例)
布尔异或
编辑使用 布尔异或运算符 '^'
将两个 boolean
类型的值进行异或运算,如果一个 boolean
类型的值为 true
,而另一个为 false
,则结果 boolean
类型的值为 true
,否则为 false
。
错误
- 如果其中一个被求值的值不是
boolean
类型的值,或者不能转换为boolean
类型的值。
真值表
true |
false |
|
true |
false |
true |
false |
true |
false |
语法
boolean_xor: expression '^' expression;
示例
-
与
boolean
类型的布尔异或。 -
与
def
类型的布尔异或。声明
def x
;隐式将boolean false
转换为def
→def
;将def
存储到x
声明
def y
;从x
加载 →def
;隐式将def
转换为boolean false
→boolean false
;布尔异或boolean false
和boolean true
→boolean true
;隐式将boolean true
转换为def
→def
;将def
存储到y
从
y
加载 →def
;隐式将def
转换为boolean true @0
→boolean true @0
;从x
加载 →def
;隐式将def
转换为boolean true @1
→boolean true @1
;布尔异或boolean true @0
和boolean true @1
→boolean false
;隐式将boolean false
转换为def
;将def
存储到y
布尔与
编辑使用 布尔与运算符 '&&'
将两个 boolean
类型的值进行与运算,如果两个 boolean
类型的值都为 true
,则结果 boolean
类型的值为 true
,否则为 false
。
错误
- 如果其中一个被求值的值不是
boolean
类型的值,或者不能转换为boolean
类型的值。
真值表
true |
false |
|
true |
true |
false |
false |
false |
false |
语法
boolean_and: expression '&&' expression;
示例
-
与
boolean
类型的布尔与。 -
与
def
类型的布尔与。声明
def x
;隐式将boolean true
转换为def
→def
;将def
存储到x
声明
def y
;从x
加载 →def
;隐式将def
转换为boolean true @0
→boolean true @0
;布尔与boolean true @0
和boolean true @1
→boolean true
;隐式将boolean true
转换为def
→def
;将def
存储到y
隐式将
boolean false
转换为def
→def
;将def
存储到x
;从
y
加载 →def
;隐式将def
转换为boolean true
→boolean true
;从x
加载 →def
;隐式将def
转换为boolean false
→boolean false
;布尔与boolean true
和boolean false
→boolean false
;隐式将boolean false
转换为def
;将def
存储到y
布尔或
编辑使用 布尔或运算符 '||'
将两个 boolean
类型的值进行或运算,如果其中一个 boolean
类型的值为 true
,则结果 boolean
类型的值为 true
,否则为 false
。
错误
- 如果其中一个被求值的值不是
boolean
类型的值,或者不能转换为boolean
类型的值。
真值表
true |
false |
|
true |
true |
true |
false |
true |
false |
语法
boolean_and: expression '||' expression;
示例
-
与
boolean
类型的布尔或。 -
与
def
类型的布尔或。声明
def x
;隐式将boolean false
转换为def
→def
;将def
存储到x
声明
def y
;从x
加载 →def
;隐式将def
转换为boolean false
→boolean true
;布尔或boolean false
和boolean true
→boolean true
;隐式将boolean true
转换为def
→def
;将def
存储到y
隐式将
boolean false
转换为def
→def
;将def
存储到y
;从
y
加载 →def
;隐式将def
转换为boolean false @0
→boolean false @0
;从x
加载 →def
;隐式将def
转换为boolean false @1
→boolean false @1
;布尔或boolean false @0
和boolean false @1
→boolean false
;隐式将boolean false
转换为def
;将def
存储到y