日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scala基础教程(三):访问修饰符、运算符

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala基础教程(三):访问修饰符、运算符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

包,類或對象的成員可以標記訪問修飾符private和protected,如果我們不使用這兩種關鍵字,那么訪問將被默認設置為public。這些修飾 限制為成員的代碼的某些區域訪問。要使用訪問修飾符,包括它的包,類或對象的成員定義的關鍵字,我們將在下一節中看到。

私有成員:

私有成員只能看到里面包含的成員定義的類或對象。下面是一個例子:

class Outer { ?? class Inner { ????? private def f() { println("f") } ????? class InnerMost { ???????? f() // OK ????? } ?? } ?? (new Inner).f() // Error: f is not accessible }

在Scala中,訪問 (new Inner).f() 是非法的,因為f被聲明為private內部類并且訪問不是在內部類內。與此相反,到f第一接入類最內層是確定的,因為該訪問包含在類內的主體。 Java將允許這兩種訪問,因為它可以讓其內部類的外部類訪問私有成員。

保護成員:

受保護的成員是從該成員定義的類的子類才能訪問。下面是一個例子:

package p { ?? class Super { ????? protected def f() { println("f") } ?? } ?? class Sub extends Super { ????? f() ?? } ?? class Other { ???? (new Super).f() // Error: f is not accessible ?? } }

類分給 f 訪問是正常的,因為f被聲明為受保護的超類和子類是超級的子類。相比之下,訪問 f 在其他是不允許的,因為其他沒有從超級繼承。在Java中,后者訪問將仍然允許的,因為其他的是在同一個包子。

公共成員:

未標示私有或受保護的每一個成員是公開的。不需要明確使用修飾符public。這樣的成員可以從任何地方訪問。下面是一個例子:

class Outer { ?? class Inner { ????? def f() { println("f") } ????? class InnerMost { ???????? f() // OK ????? } ?? } ?? (new Inner).f() // OK because now f() is public }

保護范圍:

Scala中的訪問修飾符可以增加使用修飾符。形式:private[X]或protected[X]的修飾符意味著訪問私有或受保護“達到”X,其中X代表了一些封閉的包,類或單個對象。考慮下面的例子:

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 ???????? } ????? } ?? } }

注意,上面的例子中以下幾點:

·????????變量workDetails將可對任何一類封閉包professional范圍內。

·????????變量friends 將可對任何一類封閉包society中。

·????????變量secrets 將可只在實例方法隱含的對象(this)。

?

?

運算符是一個符號,告訴編譯器執行特定的數學或邏輯操作。 Scala有豐富的內置運算符,運算符提供了以下類型:

·????????算術運算符

·????????關系運算符

·????????邏輯運算符

·????????位運算符

·????????賦值運算符

本章將學習研究算術,關系,邏輯,按位,分配賦值和其他運算符。

算術運算符:

Scala語言支持以下算術運算符:

假設變量A=10和變量B=20,則:

查看例子

運算符

描述

示例

+

兩個操作數相加

A + B = 30

-

從第一操作減去第二操作數

A - B = -10

*

兩個操作數相乘

A * B = 200

/

通過分子除以分子

B / A = 2

%

模運算,整數除法后的余數

B % A = 0

關系運算符:

Scala語言支持以下關系運算符

假設變量A=10和變量B=20,則:

查看示例

運算符

描述

示例

==

檢查兩個操作數的值是否相等,如果是的話那么條件為真。

(A == B) 不為?true.

!=

檢查兩個操作數的值是否相等,如果值不相等,則條件變為真。

(A != B) ?true.

>?

檢查左邊的操作數的值是否大于右操作數的值,如果是的話那么條件為真。

(A > B)?不為?true.

<?

檢查左邊的操作數的值是否小于右操作數的值,如果是的話那么條件為真。

(A < B) true.

>=

檢查左邊的操作數的值是否大于或等于右操作數的值,如果是的話那么條件為真。

(A >= B)?不為?true.

<=

檢查左邊的操作數的值是否小于或等于右操作數的值,如果是的話那么條件為真。

(A <= B) true.

邏輯運算符:

Scala語言支持以下邏輯運算符

假設變量A=1和變量B=0,則:

查看示例

運算符

描述

示例

&&

所謂邏輯與操作。如果兩個操作數為非零則條件為真。

(A && B) ?false.

||

所謂的邏輯或操作。如果任何兩個操作數是非零則條件變為真。

(A || B) true.

!

所謂邏輯非運算符。使用反轉操作數的邏輯狀態。如果條件為真,那么邏輯非操作符作出結果為假。

!(A && B) ?true.

位運算符:

位運算符適用于位和位操作進行一下。 :&, |, 和^ 其真值表如下:

p

q

p & q

p | q

p ^ q

0

0

0

0

0

0

1

0

1

1

1

1

1

1

0

1

0

0

1

1

假設,如果A =60;B =13;現在以二進制格式它們將如下:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A? = 1100 0011

Scala語言支持位運算符列在下表中。假設變量A=60和變量B=13,則:

查看示例

運算符

描述

示例

&

二進制和運算符副本位的結果,如果它存在于兩個操作數。

(A & B) = 12, 也就是?0000 1100

|

二進制或操作拷貝,如果它存在一個操作數。

(A | B) = 61,?也就是?0011 1101

^

二進制異或運算符的副本,如果它被設置在一個操作數而不是兩個比特。

(A ^ B) = 49,?也就是?0011 0001

~

二進制的補運算符是一元的,具有翻轉位的效應。

(~A ) = -61,?也就是?1100 00112補碼形式,由于一個帶符號二進制數。

<<?

二進制左移位運算符。左邊的操作數的值向左移動由右操作數指定的位數。

A << 2 = 240, 也就是 1111 0000

>>?

二進制向右移位運算符。左邊的操作數的值由右操作數指定的位數向右移動。

A >> 2 = 15,?也就是?1111

>>>?

右移補零操作。左邊的操作數的值由右操作數指定的位數向右移動,并轉移值以零填充。

A >>>2 = 15?也就是?0000 1111

賦值運算符:

Scala語言支持以下賦值運算符:

查看示例

運算符

描述

示例

=

簡單的賦值操作符,分配值從右邊的操作數左側的操作數

C = A + B 將分配?A + B 的值到?C

+=

加法和賦值運算符,它增加了右操作數左操作數和分配結果左操作數

C += A 相當于 C = C + A

-=

減和賦值運算符,它減去右操作數從左側的操作數和分配結果左操作數

C -= A 相當于 C = C - A

*=

乘法和賦值運算符,它乘以右邊的操作數與左操作數和分配結果左操作數

C *= A 相當于 C = C * A

/=

除法和賦值運算符,它把左操作數與右操作數和分配結果左操作數

C /= A 相當于 C = C / A

%=

模量和賦值運算符,它需要使用兩個操作數的模量和分配結果左操作數

C %= A 相當于 C = C % A

<<=

左移位并賦值運算符

C <<= 2 等同于?C = C << 2

>>=

向右移位并賦值運算符

C >>= 2?等同于?C = C >> 2

&=

按位與賦值運算符

C &= 2?等同于C = C & 2

^=

按位異或并賦值運算符

C ^= 2?等同于?C = C ^ 2

|=

按位或并賦值運算符

C |= 2?等同于?C = C | 2

Scala的運算符優先級:

運算符優先級決定術語的表達式分組。這會影響一個表達式是如何進行計算。某些運算符的優先級高于其他;例如,乘法運算符的優先級比所述加法運算符優先級更高:

例如X =7 + 3* 2;這里,x 被賦值13,而不是20,因為運算符* 優先級高于+,所以它首先做乘法3 * 2,然后加上7。

這里,具有最高優先級的運算符在表的頂部,那些優先低級排在底部。在一個表達式,優先級高的運算符將首先計算。

分類?

運算符

關聯

Postfix?

() []

從左到右

Unary?

! ~

從右到左

Multiplicative ?

* / %?

從左到右

Additive ?

+ -?

從左到右

Shift ?

>> >>> << ?

從左到右

Relational ?

> >= < <= ?

從左到右

Equality ?

== !=?

從左到右

Bitwise AND?

&?

從左到右

Bitwise XOR?

^?

從左到右

Bitwise OR?

|?

從左到右

Logical AND?

&&?

從左到右

Logical OR?

||?

從左到右

Assignment?

= += -= *= /= %= >>= <<= &= ^= |=?

從右到左

Comma?

,?

從左到右


from: http://www.yiibai.com/scala/scala_basic_syntax.html

總結

以上是生活随笔為你收集整理的Scala基础教程(三):访问修饰符、运算符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。