package com.lyp.chaper01.vars

object VarDemo {

  def main(args: Array[String]): Unit = {

    var num1 = 22  //这时 num1 就是Int
    //方式1 ,可以利用idea的提示来证明,给出提示
    //方式2,使用isInstanceof[int]判断
  println(num1.isInstanceOf[Int])

    //修饰的变量不可变
    var age = 10l  //age 是可变的  反编译底层代码为 private int age  = 101
    age = 33  //OK

    val num2 = 30   // private final int  num2 = 30 
  //  num2 =10 // val修饰的变量是不可以改变的 ,源代码 中是被final 修饰

    /**
      *   scala 设计者为什么设计 var 和val
      *   1.在实际编程,我们更多需求是获取/创建 一个对象之后,读取该对象的属性, 或者修改对象的属性值,但是我们很少去改变这个对象本身
      *    cat =  new cat cat.age =5  cat = new cat ()
      *   2. 因为val 没有线程安全问题,因此效率极高,scala设计者推荐使用val
      *   3. 如果对象需要改变,则使用var
      *
      */

    val  cat = new Cat
    cat.age = 4  //ok
    cat.name = "huahua"
    //cat.weight=12 // 不可改变
  }

}
class Cat{

  var age : Int = 2
  var name :String = "Tiger"
  val weight :Double = 7.2
}

 

 

Scala --var 变量

变量声明时需要初始化

程序中的 "+"的使用  数字是加法,字符串是拼接

1)scala 与Java有着相同的数据类型,在Scala中数据类行都是对象,也就是生活Scala没有java中的原生态类型

2)Scala 数据类型分为量大类  AnyVal (值类型) he  AnyRef (引用类型),不管是AnyVal 还是AnyRef都是对象

 

Scala --var 变量

1)在Scala中由一个跟类型Any 它是所有类的父类

2)在Scala中一切皆为对象,分为2大类,AnyVal (值类型) ,AnyRef (引用类型),他们都是Any子类

3)Null是Scala的特别类型,它只有一个null,值,它是boottomcalss,是所有anyRef类型的子类

4)Nothing 类型是所有类型的子类,在开发中通常可以将Nothing类型的值返回给任意变量或函数,这里抛出异常使用的多

5)在Scala中仍然遵守,低精度的值向高精度的值转换

 

Scala数据类型列表
Byte [1] 8bit,数值区间-128 至127
Short[2] 16bit
Int[4] 32bit
Long[8] 64bit
Float 32bit
Double 64bit
char 16bit
String

字符序列

Boolean true或false
Unit 表示无值  和void等同
Null null
Nothing Nothing类型在Scala的类层级的最低端,它是任何类的子类
Any Any是所有其他类的超类
AnyRef AnyRef类是Scala里所有引用类(reference class)的基类
AnyVal AnyVal类是Scal里数据类型的基类

最高位是符号位 0 为正 

0 111 1111 2^7-1 =127

1111 1111 - (2^7)-1=-128

0000 0000  +0(正零)

1000 0000  -0 (负零)这个负零给了负数位 是128 而是不是127

 

 

相关文章:

  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2021-04-20
  • 2020-10-03
  • 2021-12-21
  • 2022-02-16
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-04
  • 2021-06-02
  • 2022-12-23
  • 2021-12-23
  • 2022-12-23
相关资源
相似解决方案