怎么計算一元十五次方程(五十個一元一次方程)
719
2022-05-30
源文件以 ".scala" 為擴展名 ; 程序的執(zhí)行入口是main()函數, 嚴格區(qū)分大小寫
方法由一條條語句構成,語句后不需要分號;? 一行有多條語句,除了最后一條語句不需要分號,其它語句需要分號
\t ? ? ?:一個制表位,實現對齊的功能
\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小時內刪除侵權內容。