zoukankan      html  css  js  c++  java
  • 类、对象、基础类型、操作(Scala)

    类和对象

    在类定义中,有字段filed和方法method,统称为成员member,通过val和var定义字段指定对象的变量。通过def定义方法。(和Python一样)实例一个类后,会指派一些内存来保存对象的状态图。个人理解对通过地址间映射,有一块内存保存值。

    对字段声明私有。在var、val前加。不加,就是共有public。

    class Checksum {
        private var sum = 0
    }
    

    单例对象

    Scala的类不允许有静态成员static。对此类使用场景,Scala提供了单例对象。将class关键字替换成object。当单例对象和某个类共用同一个名字时,称作这个类的伴生对象。类又叫作这个单例对象的伴生类,可以互相访问对方的私有成员。可以把单例对象当作用于安置Java编写的静态方法。

    应用程序

    没有同名的伴生类的单例对象成为孤立对象。孤立对象的作用:将工具方法归集在一起,或定义Scala应用程序的入口。

    要运行一个Scala程序,必须提供一个独立对象的名称。这个独立对象要包含main方法,该方法接收一个Array[String]作为参数,结果类型为Unit。

    import ChecksumAccumulator.calculate
    //calculate是单例对象ChecksumAccumulator的一个方法,不用实例,直接调用
    
    object Summer {
        def main(args : Array[String]) = {
            for (arg <- args)
                println(arg + ":" + calculate(arg))
        }
    }
    

    Scala和Java的区别之一,Java要求你将公共的类放入跟类同名的文件中,Scala可以任意命名.scala文件。

    基础类型和操作

    Scala的基础类型和Java对应的类型取值区间完全相同。

    整数字面量

    0X十六进制,没有其他修饰就是十进制,以L结尾就是LONG型。

    浮点数中,没有其他修饰就是double类型,如果以f结尾就是float类型。

    字符中,字符字面量由一对单引号和中间的任意Unicode字符组成。转义字符。

    val a = 'A'
    val a = 'u0041'
    

    字符串由双引号里的字符组成。可以用""" """来表示原生字符串。

    整体上,和Java相似,没有什么不同。

    字符串插值

    val name = "reader"
    println(s"Hello, $name!")
    

    s出现在首个双引号前,Scala将使用s这个字符串插值器来处理该字面量,对内嵌的每个表达式求值,对求值结果调用toString。
    共有三种字符串插值器,s、f和raw。

    操作符

    Int包含多个重载的+方法,分别接收不同的参数类型。

    位运算操作

    &按位与,|按位或,^按位异或,~位补码操作(对每一位取反)。<<左移,>>右移,>>>无符号右移。

    ==

    Scala的==和Java不同,对于引用类型,Java的==比较的是引用相等性,即两个变量指向JVM堆上的同一个对象。

  • 相关阅读:
    超酷的元素周期表
    TestLink在线Excel用例转换xml
    我也学习JAVA多线程-join
    request.getSession(true/false)的区别
    nginx location配置详细解释
    RestTemplate--解决中文乱码
    扇贝-每日一句
    Hexo博客系列(三)-将Hexo v3.x个人博客发布到GitLab Pages
    C程序的内存分区(节选自黑马训练营day1)
    CodeBlocks更换界面主题界面、汉化及去掉注释及字符串的下划线(汉化包的链接来自本站的BeatificDevin大神)
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/13112215.html
Copyright © 2011-2022 走看看