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 的成员声明时使用privateprotected关键字可改变其访问权限,如果包含访问修饰,则是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的调用则是合法,因为InnerMostInner类的内部定义,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`包中的任何类可见
  • friendssociety包中的任何类可见
  • 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