刚开始学java的时候,我看的《java 语言的艺术与科学—计算机科学导论》,后来我开始看Oracel的《The Java turorials》,觉得这个讲得很清楚,当时我觉得看这个就很好,虽然也在这个教程里面看见了 The Java Language Specification》,也觉得这东西肯定很精确,不过没有进去看,主要是时间问题,当时觉得专注一点比较好。不过Turorials 确实比较浅一点,毕竟只是教程而已,教程只是教会你怎么使用—即HOW,而如果你想理解的精确(如WHY),就必须看其他的,甚至应该了解底层。在看书或者文档之前,也许我要搞清楚这书(或者其他文档/资料)到底是定位,比如仅仅只是教程,又比如是精确的定义,又或者是其他教程加上个人理解。拿android来说,开发者页面有几个选项卡,
+ Training
+ API Guide
+ Reference
其中 trianing 会告诉你如何开始写安卓应用,但是点到即止。而API Guide 则对每个类和接口提供了详细说明,还包括了一些重要概念的说明与解释。 至于Reference 则是参考手册了,javadoc,针对代码而写的注释。
好吧,开始正题。
再说操作符之前先看看java语言的数据类型。
java数据类型:
1. 原始数据类型
- boolean 类型
- 数值类型( numeric types)
- 整数类型 (integer types)
- byte
- char
- short
- int
- long
- 浮点类型 (floating -point types)
- float
- double
- 整数类型 (integer types)
2. 引用数据类型
- array
- Object
3. null 类型
空类型没有名字,可视为常量。
Java 为原始数据类型值定义了操作符(为 引用数据类型 String 定义了连接操作符 “+” )。操作符是什么东西,不过是一个符号表示,人来定义其意义,加上具体实现即可。看操作符根据类型来看最好,
操作符
1. 针对boolean 类型的操作符有:
+. 关系运算符 (==) 和 (!=)+. 逻辑补 (!)+. 逻辑与(&),逻辑异或(^), 逻辑或(|)+. 条件与(&&), 条件或(||)+. 三目条件运算符 ( ? :)+. 字符串连接运算符 (+) {连接字符串时,将boolean值装换为 true / false 的字符串}
2. 针对整数类型的操作符 Numeric 之 Integer Operations
-
比较操作符
- < , <= , > , >=
- == , !=
-
数学运算(结果为 int 或 long)
- 一元正/负操作符: + , –
- 乘/除/取余: * , / , %
- 加/减:+ , –
- 自增/自减 : ++ , —
- 带符号左移/带符号右移/无符号右移: << , >> , >>>
- 位补(bitwise complement): ~
- 整型位操作符: & , ^ , |
- 条件运算符
- ? :
- 强制类型转换 由一种整型转换到其他整型
- 字符串连接操作符
- 十进制值型字符串 如 “value:” + 0x80 >>>> value:128
其中需要注意的有:
- 移位运算符:
- n << s = n * power(2,s) (2的s 次方)
- n >> s = n / power(2,s)
- n >>> s (其中 2<<-s)是为了去掉符号位
- n为正数 :n >>> s = ( n >> s )
- n 为 int 型负数 : n >>> s = (n >> s) + (2<<-s) = (n >>s) + (2>>(31-s))
- n 为 long 型负数: n >>> s = (n >> s) + (2<<-s) = (n>>s) + (2<<(63-s))
- 按位运算符 — ~, & , ^, |