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是指,程序在栈内存中存在该变量,但其不指向的堆内存或指向的堆内存找不到相应的地址

  

 

  

本文为原创文章,转载请标明出处
原文地址:https://www.cnblogs.com/harden13/p/14778414.html