01_Scala基礎_變量類型_運算符

      網友投稿 719 2022-05-30

      源文件以 ".scala" 為擴展名 ; 程序的執(zhí)行入口是main()函數, 嚴格區(qū)分大小寫

      方法由一條條語句構成,語句后不需要分號;? 一行有多條語句,除了最后一條語句不需要分號,其它語句需要分號

      \t ? ? ?:一個制表位,實現對齊的功能

      01_Scala基礎_變量類型_運算符

      \n? ? ?:換行符

      \\ ? ? ?:一個\

      \" ? ? ?:一個"

      \r ? ? ?:一個回車 ?println("hello\rk");

      Scala語言輸出的三種方式

      1 字符串通過+號連接(類似java)

      2 printf用法 (類似C語言)字符串通過 % 傳值。

      3 字符串通過$引用(類似PHP)

      Scala中的注釋類型

      單行注釋 ? ?//注釋文字

      多行注釋 /* ?注釋文字 */

      文檔注釋 ? 被工具 scaladoc 所解析,生成一套以網頁文件形式體現的該程序的說明文檔

      變量 var | val 變量名 [: 變量類型] = 變量值

      類型可以省略(類型推導)

      類型確定后,就不能修改 (強數據類型)

      var 修飾的變量可改變; 修飾的對象引用可以改變, ?val 可改 ?編譯后等同于加上final

      /** * @deprecated xxx * @example testing coding */ object PrintVarTest { def main(args: Array[String]): Unit = { var name: String = "hello" var age: Int = 35 // printf用法 //字符串通過 % 傳值 //字符串通過$引用 //1 printf + % 格式化輸出 printf("名字: %s , 年齡: %d \n", name,age) println("名字:" +name) // 2 println () $變量 輸出 println(s"名字: $name , 年齡: $age") // 變量 var | val 變量名 [: 變量類型] = 變量值 //1 類型可以省略(類型推導) //2 類型確定后,就不能修改 (強數據類型) //3 var 修飾的變量可改變 val 修飾的變量不可改 編譯后等同于加上final //4 var 修飾的對象引用可以改變 //5 變量聲明時,需要初始值 // 編譯器,動態(tài)的 (逃逸分析): 當數據生命周期很長,經常引用,會放在堆里(heap) ,如果偶爾用一下會放在棧里面(stack) 對象也可能在stack里面 var age_var: Int = 10 var age_var_updated = 10 //1 類型可以省略(類型推導) var score:Float = 70.9f // 在scala中,小數默認為Double ,整數默認為Int // age_var = "alex" 2 類型確定后,就不能修改 (強數據類型) val lx2 = new jiefu //因為val 沒有線程安全問題,因此效率高 var lx = new jiefu //4 var 修飾的對象引用可以改變 // 3 var 修飾的變量可改變 val 修飾的變量不可改 編譯后等同于加上final lx.age = 30 // lx.name = "bob" 報錯 val final 不可變 } } class jiefu{ var age: Int = 29 val name: String = "Robin" // var high : Double = 0 // 5 必須有初始值 不然就是抽象的 }

      數據類型介紹

      1 Scala中根類型是 Any ,所有類的父類

      2 AnyVal(值類型) 和 AnyRef(引用類型) 不管是AnyVal還是AnyRef 都是對象,都是any的子類

      3 Null 類型是特殊類型,只有一個值null, 是bottom class, 是所有Anyref類型的子類

      4 Nothing ?也是bottom class, 所有類的子類, 將Nothing類型的值 返回給任意變量或函數,多用于異常

      數據類型列表

      8位有符號補碼整數。數值區(qū)間為 -128 到 127

      Short [2]

      16位有符號補碼整數。數值區(qū)間為 -32768 到 32767

      Int [4]

      32位有符號補碼整數。數值區(qū)間為 -2147483648 到 2147483647

      Long [8]

      64位有符號補碼整數。數值區(qū)間為 -9223372036854775808 到 9223372036854775807

      Float [4]

      32 位, IEEE 754標準的單精度浮點數; 兩種表示法:1 十進制: 10.11f,? ? 2 科學計數法: 5.2e-2 => 5.2*10的負的二次方

      Double [8]

      64 位 IEEE 754標準的雙精度浮點數; 更精確 小數點后大致7位

      Char [2]

      16位無符號Unicode字符, 區(qū)間值為 U+0000 到 U+FFFF

      String

      字符序列

      Boolean

      true或false

      Unit

      表示無值,和其他語言中void等同。用作不返回任何結果的方法的結果類型。Unit只有一個實例值,寫成()。

      Null

      null

      Nothing

      Nothing類型在Scala的類層級的最低端;它是任何其他類型的子類型。

      Any

      Any是所有其他類的超類

      AnyRef

      AnyRef類是Scala里所有引用類(reference class)的基類

      數據類型介紹

      1 Scala中根類型是 Any ,所有類的父類

      2 AnyVal(值類型) 和 AnyRef(引用類型) 不管是AnyVal還是AnyRef 都是對象,都是any的子類

      3 Null 類型是特殊類型,只有一個值null, 是bottom class, 是所有Anyref類型的子類

      4 Nothing ?也是bottom class, 所有類的子類, 將Nothing類型的值 返回給任意變量或函數,多用于異常

      Booolean類型數據只允許取值true和false

      null 可以賦值給任意引用類型(AnyRef),

      null 不能賦值給值類型(AnyVal: 比如 Int, Float, Char, Boolean, Long, Double, Byte, Short)

      object DataTypeTest { def main(args: Array[String]): Unit = { sayHi() sayHi _ ; println("xxx") // sayHi _ 不執(zhí)行 sayHi // 無形參 可以省略 // char //當我們輸出一個char類型時,他會輸出該數字對應的字符(碼值表 unicode)//unicode 碼值表包括ascii var c1 : Char = 'a' var c2 : Char = 97 printf(s"c1: $c1, c2: $c2\n") //c1: a, c2: a //char 可以當做數字進行運行 var char2: Char = 'a' var num = 10 + char2 println("num=" + num + " =>" + num.getClass) // num=107 =>int //1. 當把一個計算的結果賦值一個變量,則編譯器會進行類型轉換及判斷(即會看范圍+類型) //2. 當把一個字面量賦值一個變量,則編譯器會進行范圍的判定 // var cc2: Char = 'a' + 1 //報錯 require char found int // var cc3: Char = 97 + 1 // 報錯 require char found int var cc4: Char = 98 // Null & Nothing //Null類只有一個實例對象,null,類似于Java中的null引用。null可以賦值給任意引用類型(AnyRef), //不能賦值給值類型(AnyVal: 比如 Int, Float, Char, Boolean, Long, Double, Byte, Short) var d1 : Dog = null // var d2 : Double = null // 報錯 an expression of type Null is ineligible for implicit conversion } def sayHi(): Unit = { println("hello") } //比如開發(fā)中,我們有一個方法,就會異常中斷,這時就可以返回Nothing //即當我們Nothing做返回值,就是明確說明該方法沒有沒有正常返回值 def sayException: Nothing = { throw new Exception("Nothing 類型 拋出異常") } } class Dog { }

      1 自動類型提升 程序在進行賦值或者運算時,精度小的類型自動轉換為精度大的數據類型,這個就是自動類型轉換(隱式轉換)。

      2 強轉: 自動類型轉換的逆過程,將容量大的數據類型轉換為容量小的數據類型。使用時要加上強制轉函數,但可能造成精度降低或溢出

      java ?: ?int num = (int)2.5

      scala : ?var num : Int = ?2.7.toInt ?//對象

      1 當進行數據的 從 大——>小,就需要使用到強制轉換

      2 強轉符號只針對于最近的操作數有效,往往會使用小括號提升優(yōu)先級

      3 Char類型可以保存 Int的常量值,但不能保存Int的變量值,需要強轉

      4 Byte和Short類型在進行運算時,當做Int類型處理

      object DataTransAtest { def main(args: Array[String]): Unit = { var c1 : Char = 'a' var c2 : Int = c1 println("c1: " + c1.getClass) // c1: char println("c2: " + c2) // c2: 97 低精度向高精度轉換 char -> int var i1 :Byte = 20 // var c3: Char = i1 //type mismatch Byte 不能與 char 互轉 //1 自動類型提升:有多種類型的數據混合運算時,系統(tǒng)首先自動將所有數據轉換成容量最大的那種數據類型,然后再進行計算 var n1 = 10 var n2 = 1.1f var n3 = n1 + n2 println(n3.getClass) //float // 2 強轉:自動類型轉換的逆過程,將容量大的數據類型轉換為容量小的數據類型。使用時要加上強制轉函數,但可能造成精度降低或溢出 val d1 = 1.2 val s1 = d1 + "" // + 拼接 返回字符串 //String類型轉基本數據類型 精度損失 val s2 = "12" val num1 = s2.toByte; val num2 = s2.toShort val num12 = num1 + num2 // 返回int 類型 val num3 = s2.toDouble ; val num4 = s2.toLong var num5 = num3 + num4 //返回double類型 //在scala中,不是講小數點后的數據進行截取,而是會拋出異常 val s4 = "12.5" println(s4.toInt) // error println(s4.toDouble) // ok } }

      運算符? 特殊的符號,用以表示數據的運算、賦值和比較等。

      算術運算符 (arithmetic)是對數值類型的變量進行運算

      比較運算符(關系運算符) 結果都是Boolean型,也就是要么是true,要么是false

      邏輯運算符 用于連接多個條件(一般來講就是關系表達式),最終的結果也是一個Boolean值

      賦值運算符 ?就是將某個運算后的值,賦給指定的變量

      位運算符

      num1 += 1替代 ++ ;num1 -= 1替代 num1--

      10/3 => 3

      &&

      (a && b))? ?false

      C -= A 等于 C = C - A

      C /= A 等于 C = C / A; C %= A 等于 C = C % A

      Scala

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:C#記事本項目開發(fā),一個可以實現批量操作的記事本!【附源碼】
      下一篇:HTTP 協(xié)議那些事兒(Web開發(fā)補充知識點)
      相關文章
      亚洲国产成人资源在线软件| 亚洲国产成人影院播放| 久久久久久久亚洲精品| 亚洲av永久无码一区二区三区| 亚洲制服在线观看| 亚洲网站视频在线观看| 亚洲人成在线电影| 亚洲色图在线观看| 久久亚洲美女精品国产精品| 亚洲videosbestsex日本| 亚洲日韩一页精品发布| 亚洲日韩欧洲乱码AV夜夜摸| 亚洲一本大道无码av天堂| 亚洲一本大道无码av天堂| 亚洲综合av永久无码精品一区二区 | 久久亚洲精品成人av无码网站| 久久夜色精品国产亚洲av| 伊人久久大香线蕉亚洲五月天| 亚洲自偷自偷在线制服| 亚洲αv在线精品糸列| 成人亚洲综合天堂| 亚洲日韩在线观看| 精品国产综合成人亚洲区| 久久精品亚洲综合| 亚洲欧洲中文日产| 亚洲 欧洲 日韩 综合在线| 亚洲国产精品精华液| 亚洲av无码成人精品区在线播放| 亚洲精品国自产拍在线观看 | 亚洲综合久久1区2区3区| 亚洲精品二三区伊人久久| 亚洲精品国产高清在线观看| 国产在亚洲线视频观看| 国内精品久久久久久久亚洲| 亚洲大尺度无码无码专区| 亚洲视频手机在线| 亚洲一区二区电影| 亚洲精品二三区伊人久久| 亚洲精品无码久久久久YW| 亚洲乱码日产精品a级毛片久久| 亚洲人成伊人成综合网久久久|