• Scala基础


    Scala语言类型(同java)

    静态,强,类型推断, 

    弱类型:(javascripte)
    > "1"+2
    '12'
    
    强类型:(java,scala,python)
    >>> "1"+2
    TypeError: cannot concatenate 'str' and 'int' objects
    
    动态类型:(python,javascripte)
    >>> a = 1
    >>> type(a)
    <type 'int'>
    
    静态类型:(java,scala)
    Prelude> let a = "123" :: Int
    <interactive>:2:9:
        Couldn't match expected type `Int' with actual type `[Char]'
        In an equation for `a': a = "123" :: Int
    
    动态类型=>运行时检查。静态类型=>编译期检查 

    变量

    • 语法声明
    // var | val 变量名 :变量类型 = 变量值
    // 变量的类型如果能够通过变量值推断出来,那么可以省略类型声明
            var username : String = "AsianHarden"
            or
            var username = "AsianHarden" 
    • 变量初始化
    // 显式类型: 你得说,不然编译器不知道
            var username // Error
    or
            val username = "AsianHarden" // OK
            println(username)

    可变变量

    // 值可以改变的变量,称之为可变变量,但是变量类型无法发生改变, Scala中可变变量使用关键字var进行声明
    var username : String = "AsianHarden"
    

    不可变变量

    // 值一旦初始化后无法改变的变量,称之为不可变变量。Scala中不可变变量使用关键字val进行声明, 类似于Java语言中的final关键字
    val username : String = "AsianHarden"
    

    标识符  

    Scala 可以使用两种形式的标志符,字符数字和符号。
    	字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号"$"在 Scala 中也看作为字母。然而以"$"开头的标识符为保留的 Scala 编译器产生的标志符使用,应用程序应该避免使用"$"开始的标识符,以免造成冲突。
    	Scala 的命名规范采用和 Java 类似的 camel 命名规范,首字符小写,比如 toString。类名的首字符还是使用大写。此外也应该避免使用以下划线结尾的标志符以避免冲突。
    	Scala 内部实现时会使用转义的标志符,比如:-> 使用 $colon$minus$greater 来表示这个符号。
    

    类型转换

    • 隐式转换(自动类型转化)
    子类可以自动转换为超;向上转是隐式的
        val c : Char = 'A' + 1
        println(c)
    
    • 强制类型转化
    // 基本上Scala的AnyVal类型之间都提供了相应转换的方法。,常量计算在编译时就完成
    var a : Int = 10
    Var b : Byte = a.toByte
    
    //变量在执行时候,提升数据类型到int ,但是需要char
        val  num=10;
        val  ch:Char = 'A'+num
        println(ch)
    

      

    Scala的空

    1.Null 和 null
    Null 是Scala的一个特征(Trait),我们不能创建他的实例,但从Scala语言层面上来说,null是Null的唯一对象。如果你写了一个带有Null作为参数的对象,那么你传入的参数只能是null,或者指向Null的引用。但无法获取null的类。 

    对比Java的空

    Java中的null值
    null是关键字,像public、static、final。它是大小写敏感的,你不能将null写成Null或NULL
    就像每种原始类型都有默认值一样,如int默认值为0,boolean的默认值为false,null是任何引用类型的默认值,不严格的说是所有object类型的默认值。
    null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型。
    null可以赋值给引用变量,你不能将null赋给基本类型变量,例如int、double、float、boolean。否则,编译器将会报错。
    理解:可以认为null是指,程序在栈内存中存在该变量,但其不指向的堆内存或指向的堆内存找不到相应的地址
    

      

     

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    Centos 7 zabbix 实战应用
    Centos7 Zabbix添加主机、图形、触发器
    Centos7 Zabbix监控部署
    Centos7 Ntp 时间服务器
    Linux 150命令之查看文件及内容处理命令 cat tac less head tail cut
    Kickstart 安装centos7
    Centos7与Centos6的区别
    Linux 150命令之 文件和目录操作命令 chattr lsattr find
    Linux 发展史与vm安装linux centos 6.9
    Linux介绍
  • 原文地址:https://www.cnblogs.com/harden13/p/14778414.html
Copyright © 2020-2023  润新知