6 ,scala 语法 ( 变量,数据类型,类关系图 )

一 ,变量 :

1 ,变量赋值 : var ,val

  1. 代码 :
object Aa2 {
  def main(args: Array[String]): Unit = {
    var a:Int = 1;
    val b:String="a"
    println(1+""+b)
  }
}
  1. 区别 : var 和 val
    var 变量可变
    val 变量不可变
  2. 为什么这样设计 :
    1 ,编程中,我们会经常修改对象的属性值,很少改变成为另一个对象。
    2 ,val 效率高,没有线程安全问题
  3. 推荐使用 : val
  4. 如果需要改变对象,才使用 : var
  5. 原理 : val 修饰的变量,底层相当于用了 final 修饰。

2 ,默认类型 :

  1. 小数 : 默认 Double
  2. 整数 : 默认 Int

3 ,内存图 :

  1. 真实值 : 放在内存中。
  2. 我们的变量 : 引用了内存中的值。
    在这里插入图片描述

4 ,逃逸分析 :

  1. 什么样的对象放在堆内存 :
    1 ,生命周期比较长。
    2 ,大量的被别的对象所引用。
    3 ,放入堆内存的目的 : 跨栈 。
  2. 什么样的对象放在栈内存 :
    如果一个数据空间,他知识临时用一下,就把它放在栈中
  3. 不要忘了根本原则 :
    放入堆内存的目的是,跨栈 。

5 ,声明变量 : 类型推导

  1. 我们可以不指定类型,因为 scala 可以做类型推导
  2. 验证 :
object Aa2 {
  def main(args: Array[String]): Unit = {
    var a = 1;
    println(a.isInstanceOf[Int])
  }
}
  1. 成功的标志 : 看到 true

6 ,类型不改 :

  1. 可以修改值。
object Aa2 {
  def main(args: Array[String]): Unit = {
    var a = 1;
    a = 2;
    println(a)
  }
}
  1. 不可以修改类型 :报错
    在这里插入图片描述

7 ,需要初始值 : 不可以不赋值

8 ,特殊使用 : +

  1. 两边都是数字 : 数学运算
  2. 有一边是字符串 : 拼接

如果不赋值,会报错

二 ,数据类型 :

1 ,与 java 比较 :

  1. 有相同的
  2. 也有不同的

2 ,全是对象 :

scala 中全是对象类型,没有 java 的基本类型。

3 ,顶级父类型 :

Any

4 ,值类型 : 对象

AnyVal

5 ,引用类型 :

AnyRef

6 ,类关系图 :

  1. 实线 : 继承关系
  2. 虚线 : 隐式转换
  3. 值型 : 各种内置对象,可以赋值
  4. 引用型 : 集合 + java 类 + 自定义 scala 类
  5. Null : 所有引用型的子类,只有一个实例 : null
  6. Nothing : 所有类型的子类
    在这里插入图片描述

7 ,抛异常 : Nothing 的使用

object Aa2 {
  def main(args: Array[String]): Unit = {
    println(pao)
  }
  def pao() :Nothing = {
    throw new Exception("出错啦")
  }
}

8 ,隐式转换 : 低到高,可以直接转 :

  1. 低到高 : 可以。
  2. 高到低 : 不可以。
  3. 代码 :
def main(args: Array[String]): Unit = {
    //  默认类型 Double
    var a = 1.0
    // 指定类型 float
    var b = 2.0f
    //  隐式转换
    a=b
    print(a)
  }

9 ,Unit :

只有一个值,()
相当于 void

10 ,整数类型 :

在这里插入图片描述

11 ,关于 Char :

object Aa2 {
  def main(args: Array[String]): Unit = {
    var a:Char = ('a'+1).toChar
    println(a)
  }
}

12 ,字符类型的本质 :

  1. 存储:字符——>码值——>二进制——>存储
  2. 读取:二进制——>码值——> 字符——>读取

13 ,特殊类型 :

  1. Unit :表示无值,和其他语言中 void 等同。用作不返回任何结果的方法的结果类型。Unit 只有一个实例值,写成 ()。
  2. Null :null , Null 类型只有一个实例值 null
  3. Nothing :Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。
    当一个函数,我们确定没有正常的返回值,可以用Nothing 来指定返回类型,这样有一个好处,就是我们可以把返回的值(异常)赋给其它的函数或者变量(兼容性)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值