Scala基础----常用

Scala基础----常用,第1张

Scala基础----常用 基本语法
1. val 常量 
2. var 变量

注意点:
1. 声名变量时,类型可以省略,编译器自动推导,即类型推导
2. 类型确定后就不能修改,Scala是一个强类型语言
3. 声名变量时,必须有初始值
4. 在声名/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的常量不可改变
5. var修饰的对象引用可以改变,val修饰的对象则不可改变,但对象的状态(值)却是可以改变的

命名规范

Scala 对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可
以起名字的地方都叫标识符。
1)命名规则
Scala 中的标识符声明,基本和 Java 是一致的,但是细节上会有所变化,有以下三种规
则:
(1)以字母或者下划线开头,后接字母、数字、下划线
(2)以 *** 作符开头,且只包含 *** 作符(+ - * / # !等)
(3)用反引号....包括的任意字符串,即使是 Scala 关键字(39 个)也可以

• package, import, class, object, trait, extends, with, type, for
• private, protected, abstract, sealed, final, implicit, lazy, override
• try, catch, finally, throw 
• if, else, match, case, do, while, for, return, yield
• def, val, var 
• this, super
• new
• true, false, null
数据类型

  1. Scala中一切数据都是对象,都是Any的子类

  2. Scala中数据类型分为两大类型

    • 数值类型
      AnyVal
    • 引用类型
      AnyRef
  3. Scala数据类型仍然遵守,低精度的值类型向高精度值类型,自动转换(低精度->高精度)

  4. Scala中的StringOps是对Java中String增强

  5. Unit:对应Java中的void,用于方法返回值的位置,表示方法没有返回值.Unit是一个数据类型,只有一个对象就是().void不是数据类型,只是一个关键字

  6. Null是一个类型,只有一个对象就是null.它是所有引用类型(AnyRef)的子类.

  7. Nothing,是所有数据类型的子类,主要用于一个函数没有明确的返回值时使用.因为这样我们可以把抛出的返回值,返回给任何的变量或者函数

  8. Scala中一切数据都是对象,都是Any的子类

整数类型
  • Byte
    Byte[1] 8位有符号补码整数.数值区间为 -128 到127 (2的8次方 对其在对称轴上进行分割 分为 -128 到127)
    127:在补码中用(-128)代替了(-0),所以补码的表示范围为: (-1280127)共256个.
    -1-127的结果应该是-128,在用补码运算的结果中, [1000 0000]补 就是-128。但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示。(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的)
  • Short
    Short[2] 16位有符号补码整数.数值区间位-32768到32767(2的16次方)
  • Int
    Int[4] 32位有符号补码整数.数值区间为-2147483648到 214748
  • Long (l|L)
    Long[8] 64 位有符号补码整数。数值区间为 -9223372036854775808 到
    9223372036854775807 = 2 的(64-1)次方-1
浮点类型
  • Float
    Float[4] 32位,IEEE 754 标准的单精度浮点数
  • Double
    Double[8] 67位IEEE 754 标准的双精度浮点数
字符类型
  • Char

      (1)字符常量是用单引号 ' ' 括起来的单个字符。
      (2)t :一个制表位,实现对齐的功能
      (3)n :换行符
      (4)\ :表示 
      (5)" :表示"
    
布尔类型
  • Boolean类型占一个字节

      (1)布尔类型也叫 Boolean 类型,Booolean 类型数据只允许取值 true 和 false
      (2)boolean 类型占 1 个字节。
    
Unit类型,Null类型以及Nothing类型
  • Unit
    表示无值,等同于 void,用作不返回任何结果的方法的结果类型,Unit只有一个实例值,写成().
    Unit 类型用来标识过程,也就是没有明确返回值的函数。
  • Null
    null,Null类型只有一个实例值null
    Null 类只有一个实例对象,Null 类似于 Java 中的 null 引用。Null 可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(AnyVal)
  • Nothing
    Nothing类型在Scala的类层级最低端;他是任何其他类型的子类型.当一个函数.我们没有正常的返回值,可以用Nothing来指定返回类型,这样有一个好处,就是沃恩可以把返回的值(异常)赋给其他的函数或者变量(兼容性)
    Nothing,可以作为没有正常返回值的方法的返回类型,非常直观的告诉你这个方法不会正常返回,而且由于 Nothing 是其他任意类型的子类,他还能跟要求返回值的方法兼容。
object Test01_Variable {
  def main(args: Array[String]): Unit = {
    //声名一个变量的通用语法
    var a:Int = 10
    //声名变量时类型可以省略,编译器自动推导,即类型推导
    var a1 = 10
    val b1 = 11
    //类型在定义之后就不能修改修改(Scala是一个强数据类型的语言)
    var  a2 = 15 //a2 类型为int

    //声名变量时,必须要有初始值
    var a3:Int = 111
    //在声名或定义一个变量时,可以使用var或者val来修饰,var修饰的变量可以改变,val修饰的变量不可改.

  }

}

object Test02_Identifier {
  def main(args: Array[String]): Unit = {
    //以字母或者下划线开头,后接数字,字母,下划线
    val hello: String = ""
    var Hello123 = ""
    val _abc = 123
    //val h-b = ""
    //以 *** 作符开头,且只包含 *** 作符(+ - * / # !等)
    var -+/ = ""
    println(-+/)
  }

}

object Test07_DataType {
  def main(args: Array[String]): Unit = {
    //1.整数类型
    val a1: Byte = 127
    val a2: Byte = -128
    val a3 = 23153121556156165L // 默认整数类型为Int

    val b1: Byte = 10
    val b2: Byte = 10 + 20 - 100
    println(b2)
    val b3 = b1 + 20
    println(b3)
    val b4: Byte = (b1 + 20).toByte
    println(b4)
    //浮点类型
    val f1: Float = 1.262f

    //字符类型
    val v1: Char = 'a'
    println(v1)

    val v2: Char = '9'
    println(v2)
    val v3: Char = 't'
    val v4: Char = 'n'
    println("abc" + v3 + "efg" + v4 + "hij")


    //转义字符
    val c5 = '\' // \表示 
    val c6 = '"' // "表示 "
    println("abc" + c5 + "efg" + c6 + "hij")
    //字符变量底层保存ASCII码
    val i1: Int = v1
    val i2: Int = v2
    println(s"i1:${i1}")
    println(s"i2:${i2}")
    val c7: Char = (i1 + 1).toChar
    println(s"c7:${c7}")
    val c8: Char = (i2 + 1).toChar
    println(s"c8:${c8}")

    //布尔类型
    val t1: Boolean = true
    val t2 = true
    println(t1)
    println(t2)

    //空类型(Unit,Null,Nothing)
    //Unit
    def m1(): Unit = {
      println("111")

    }

    val q = m1()
    println(q)
    //空引用
    //val r1:Int = null //值类型无法接收null
    val student = new Student("sada", 20)
    //student = null
    println(student)

    //Nothing
    def h1(n: Int): Int = {
      if (n == 0) {
        throw new NullPointerException
      } else
        return n


        //返回为空 因为定义为Nothing 所以就不会有返回值



    }
  }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5676313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存