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

      

     

      

    本文为原创文章,转载请标明出处
  • 相关阅读:
    convert.c:7:3: warning: incompatible implicit declaration of built-in function ‘printf’ [enabled by
    80 多个 Linux 系统管理员必备的监控工具
    控件风格19种,必须倒背如流——其实就是控件所拥有的能力,即有条件使用VCL框架所提供的(功能)代码
    控件状态11种,必须倒背如流——记录控件当前的状态,防止误判(一般使用完以后就把状态改回去)
    FindChildControl与FindComponent
    保存网页为图片——滚动截取IE(WebBrowse)
    HDOJ 1755
    IP编辑控件(因为封装的是系统自带控件,所以也使用了CreateSubClass,不过为啥要封装CN_COMMAND和CN_NOTIFY不是很明白)
    QT之深入理解QThread
    Qt读取ANSI格式文件——利用QTextCodec将其他编码格式的QByteArray转换为Unicode格式,或者从文件中读出后直接做转换
  • 原文地址:https://www.cnblogs.com/harden13/p/14778414.html
Copyright © 2011-2022 走看看