Contents
  1. 1. 访问修饰符
    1. 1.1. private
    2. 1.2. protected
    3. 1.3. public
    4. 1.4. 保护范围
  2. 2. 操作符
    1. 2.1. 算术
    2. 2.2. 关系
    3. 2.3. 逻辑
    4. 2.4. 位
    5. 2.5. 赋值
  3. 3. 运算符优先级
  4. 4. if-else

访问修饰符

在package , class , object 的成员声明时使用private和protected关键字可改变其访问权限,如果包含访问修饰,则是public。

private

私有成员只被该类内部的代码可见。直接看例子。

1
2
3
4
5
6
7
8
9
class Outer {
class Inner {
private def f() { println("f") }
class InnerMost {
f() // OK
}
}
(new Inner).f() // Error: f is not accessible
}

(new Inner).f()非法而InnerMost的调用则是合法,因为InnerMost在Inner类的内部定义,java会允许内部类访问外部类的私有成员。

protected

scala的protected成员是真正地只被其子类访问。

而在java中,它还可以被同一package下的类访问。

public

可被任意访问,scala中并无public关键字

保护范围

scala中的访问范围可被qualifier放大,形如private[X]orprotected[X]的修辞符,意为被修辞对象对X的属性。X是package class 或object这样的封装。

1
2
3
4
5
6
7
8
9
10
11
12
13
package society {
package professional {
class Executive {
private[professional] var workDetails = null
private[society] var friends = null
private[this] var secrets = null
def help(another : Executive) {
println(another.workDetails)
println(another.secrets) //ERROR
}
}
}
}

  • workDetail 对professional`包中的任何类可见
  • friends 对 society包中的任何类可见
  • secrets只对实例方法(this)中的隐式对象可见。

操作符

包括算术、关系、逻辑、位 和 赋值

算术

+ - × / %

关系

== != < > <= >=

逻辑

&& || !

位

取值表

p q p&q p\ q q^q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1

注:^为异或运算符

其它位操作
~ << >> >>> (0填充右移位)

赋值

= += -= ×= /= %= <<= >>= &= ^= |=

运算符优先级

S.No Category Operator Associativity
1 Postfix () [] Left to right
2 Unary ! ~ Right to left
3 Multiplicative * / % Left to right
4 Additive + - Left to right
5 Shift >> >>> << Left to right
6 Relational > >= < <= Left to right
7 Equality == != Left to right
8 Bitwise AND & Left to right
9 Bitwise XOR ^ Left to right
10 Bitwise OR \ Left to right
11 Logical AND && Left to right
12 Logical OR \ \ Left to right
13 Assignment = += -= *= /= %= >>= <<= &= ^= = Right to left
14 Comma , Left to right

if-else

scala的if-else与java无二致,支持

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if () {
}
--------
if () {
} else {
}
--------
if(){
}else if(){
}else if(){
}...
---------
if(){
if(){
}
}

Contents
  1. 1. 访问修饰符
    1. 1.1. private
    2. 1.2. protected
    3. 1.3. public
    4. 1.4. 保护范围
  2. 2. 操作符
    1. 2.1. 算术
    2. 2.2. 关系
    3. 2.3. 逻辑
    4. 2.4. 位
    5. 2.5. 赋值
  3. 3. 运算符优先级
  4. 4. if-else