成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Scala的關(guān)系和邏輯操作方法是什么

本篇內(nèi)容介紹了“Scala的關(guān)系和邏輯操作方法是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)主營(yíng)丹棱網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),丹棱h5小程序開(kāi)發(fā)搭建,丹棱網(wǎng)站營(yíng)銷(xiāo)推廣歡迎丹棱等地區(qū)企業(yè)咨詢(xún)

數(shù)學(xué)運(yùn)算

你可以通過(guò)中綴操作符,加號(hào)(+),減號(hào)(-),乘號(hào)(*),除號(hào)(/)和余數(shù)(%),在任何數(shù)類(lèi)型上調(diào)用數(shù)學(xué)方法。以下是一些例子:

scala> 1.2 + 2.3 res6: Double = 3.5 scala> 3 - 1 res7: Int = 2 scala> 'b' - 'a' res8: Int = 1 scala> 2L * 3L  res9: Long = 6 scala> 11 / 4 res10: Int = 2 scala> 11 % 4 res11: Int = 3 scala> 11.0f / 4.0f  res12: Float = 2.75 scala> 11.0 % 4.0 res13: Double = 3.0

當(dāng)左右兩個(gè)操作數(shù)都是整數(shù)類(lèi)型時(shí)(Int,Long,Byte,Short,或Char),/操作符將返回給你商的整數(shù)部分,去掉余數(shù)部分。%操作符指明它的余數(shù)。

用%符號(hào)得到的浮點(diǎn)數(shù)余數(shù)部分并不遵循IEEE754標(biāo)準(zhǔn)的定義。IEEE754在計(jì)算余數(shù)時(shí)使用四舍五入除法,而不是截尾除法,因此余數(shù)的計(jì)算與整數(shù)的余數(shù)操作會(huì)有很大的不同。如果你的確想要IEEE754的余數(shù),可以調(diào)用scala.Math里的IEEEremainder,例如:

scala> Math.IEEEremainder(11.0, 4.0)  res14: Double = -1.0

數(shù)類(lèi)型還提供了一元前綴+和-操作符(方法unary_+和unary_-),允許你指示文本數(shù)是正的還是負(fù)的,如-3或+4.0。如果你沒(méi)有指定一元的+或-,文本數(shù)被解釋為正的。一元符號(hào)+也存在只是為了與一元符號(hào)-相協(xié)調(diào),不過(guò)沒(méi)有任何效果。一元符號(hào)-還可以用來(lái)使變量變成負(fù)值。舉例如下:

scala> val neg = 1 + -3 neg: Int = -2 scala> val y = +3 y: Int = 3 scala> -neg  res15: Int = 2

關(guān)系和邏輯操作

你可以用關(guān)系方法:大于(>),小于(< ),大于等于(>=)和小于等于(< =)比較數(shù)類(lèi)型,像等號(hào)操作符那樣,產(chǎn)生一個(gè)Boolean結(jié)果。另外,你可以使用一元操作符!(unary_!方法)改變Boolean值。以下是一些例子:

scala> 1 > 2 res16: Boolean = false scala> 1 <  2 res17: Boolean = true scala> 1.0 < = 1.0 res18: Boolean = true scala> 3.5f >= 3.6f  res19: Boolean = false scala> 'a' >= 'A' res20: Boolean = true scala> val thisIsBoring = !true thisIsBoring: Boolean = false scala> !thisIsBoring  res21: Boolean = true

邏輯方法,邏輯與(&&)和邏輯或(||),以中綴方式帶Boolean操作數(shù)并產(chǎn)生Boolean結(jié)果。如:

scala> val toBe = true toBe: Boolean = true scala> val question = toBe || !toBe  question: Boolean = true scala> val paradox = toBe && !toBe  paradox: Boolean = false

與Java里一樣,邏輯與和邏輯或有短路:short-circuit的概念:用這些操作符建造的表達(dá)式僅評(píng)估最少能決定結(jié)果的部分。換句話(huà)說(shuō),邏輯與和邏輯或表達(dá)式的右手側(cè)部分在左手側(cè)部分能決定結(jié)果時(shí)就不再被評(píng)估了。舉個(gè)例子,如果邏輯與表達(dá)式的左手側(cè)計(jì)算結(jié)果為false,那么表達(dá)式的結(jié)果將注定是false,因此右手側(cè)部分不再做評(píng)估。與之類(lèi)似,如果邏輯或表達(dá)式的左手側(cè)部分計(jì)算結(jié)果為true,那么表達(dá)式的結(jié)果將必然是true,于是右手側(cè)部分不再被計(jì)算。下面是一些例子:

scala> def salt() = { println("salt"); false }  salt: ()Boolean  scala> def pepper() = { println("pepper"); true }  pepper: ()Boolean  scala> pepper() && salt()  pepper  salt  res22: Boolean = false scala> salt() && pepper()  salt  res23: Boolean = false

***個(gè)表達(dá)式中,pepper和salt都被調(diào)用,但第二個(gè)里,只有salt被調(diào)用。因?yàn)閟alt返回false,所以就沒(méi)必要調(diào)用pepper了。

注意

或許你會(huì)想知道如果操作符都只是方法的話(huà)短路機(jī)制是怎么工作的呢。通常,進(jìn)入方法之前所有的參數(shù)都會(huì)被評(píng)估,因此方法怎么可能選擇不評(píng)估他的第二個(gè)參數(shù)呢?答案是因?yàn)樗械腟cala方法都有延遲其參數(shù)評(píng)估乃至取消評(píng)估的設(shè)置。

位操作符

Scala讓你能夠使用若干位方法對(duì)整數(shù)類(lèi)型的單個(gè)位執(zhí)行操作。有:按位與運(yùn)算(&),按位或運(yùn)算(|)和按位異或運(yùn)算(^)。按位異或方法對(duì)它的操作數(shù)執(zhí)行互斥或:exclusive or操作。一致的位產(chǎn)生0。差異的位產(chǎn)生1。因此0011 ^ 0101產(chǎn)生0110。一元按位取補(bǔ)操作符(~,方法unary_~),反轉(zhuǎn)它的操作數(shù)的每一位。例如:

scala> 1 & 2 res24: Int = 0 scala> 1 | 2 res25: Int = 3 scala> 1 ? 3 res26: Int = 2 scala> ~1 res27: Int = -2

***個(gè)表達(dá)式,1 & 2,與運(yùn)算了1(0001)和2(0010)的每一個(gè)位,并產(chǎn)生了0(0000)。第二個(gè)表達(dá)式,1 | 2,對(duì)同樣的操作數(shù)的每一個(gè)位執(zhí)行或運(yùn)算,并產(chǎn)生3(0011)。第三個(gè)表達(dá)式,1 ^ 3,異或1(0001)和3(0011)的每一個(gè)位,產(chǎn)生2(0010)。***的表達(dá)式,~1,轉(zhuǎn)換了1(0001)的每一個(gè)位,產(chǎn)生了-2,二進(jìn)制看起來(lái)是1111 1111 1111 1111 1111 1111 1111 1111 1111 1110。

Scala整數(shù)類(lèi)型還提供了三個(gè)位移方法:左移(< < ),右移(>>)和無(wú)符號(hào)右移(>>>)。使用在中綴操作符方式時(shí),位移方法會(huì)按照右側(cè)指定的整數(shù)值次數(shù)逐位移動(dòng)左側(cè)的整數(shù)。左移和無(wú)符號(hào)右移在移動(dòng)的時(shí)候填入零。右移則在移動(dòng)時(shí)填入左側(cè)整數(shù)的***位(符號(hào)位)。舉例如下:

scala> -1 >> 31 res38: Int = -1 scala> -1 >>> 31 res39: Int = 1 scala> 1 < <  2 res40: Int = 4

二進(jìn)制的-1是1111 1111 1111 1111 1111 1111 1111 1111。***個(gè)例子里,-1 >> 31,-1被右移了31個(gè)位。由于Int包括32位,這個(gè)操作實(shí)際就是把最左側(cè)的一位移到了最右側(cè)。數(shù)字類(lèi)型的最左側(cè)位是符號(hào)位。如果最左側(cè)位是1,數(shù)字就是負(fù)的,如果是0,數(shù)字就是正的。由于>>方法在不斷右移的時(shí)候填入的是1,-1最左側(cè)的一位是1,導(dǎo)致結(jié)果與原來(lái)左側(cè)的數(shù)字一模一樣,32位個(gè)1,或者說(shuō)是-1。第二個(gè)例子里,-1 >>> 31,最左側(cè)的位再一次不斷向右移直至最右側(cè)的位置,但是這次填入的是0。因此這次的結(jié)果是二進(jìn)制的0000 0000 0000 0000 0000 0000 0000 0001,或者說(shuō)是1。***一個(gè)例子里,1 < <  2,左操作數(shù),1,被向左移動(dòng)2個(gè)位置(填入0),產(chǎn)生結(jié)果是二進(jìn)制的0000 0000 0000 0000 0000 0000 0000 0100,或者說(shuō)是4。

“Scala的關(guān)系和邏輯操作方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

標(biāo)題名稱(chēng):Scala的關(guān)系和邏輯操作方法是什么
文章URL:http://jinyejixie.com/article48/gpgghp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、靜態(tài)網(wǎng)站、面包屑導(dǎo)航、搜索引擎優(yōu)化、企業(yè)建站網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
中阳县| 兴文县| 海兴县| 昭觉县| 高淳县| 达州市| 苍溪县| 临夏市| 高雄市| 通海县| 酒泉市| 琼结县| 兴业县| 湘乡市| 烟台市| 射阳县| 门头沟区| 民和| 江陵县| 淳安县| 理塘县| 嵊州市| 得荣县| 定远县| 大理市| 康保县| 东阳市| 武冈市| 万源市| 绥江县| 察雅县| 南华县| 白水县| 鸡泽县| 兴城市| 吉林省| 辽宁省| 新建县| 东山县| 铜陵市| 平陆县|