一.初识类和对象 Scala的类与Java的类具有非常多的相似性,示例如下: // 1. 在scala中,类不需要用public声明,所有的类都具有公共的可见性 class Person { // 2. 声明私有变量,用var修饰的变量默认拥有getter/setter属性 private var age = 0 // 3.如果声明的变量不需要进行初始赋值,此时Scala就无法进行类型推断,所以需要显式指明类型 private var name: String = _ // 4. 定义方法,应指…
一.类 1.类的定义 scala语言中没有static成员存在,但是scala允许以某种方式去使用static成员这个就是伴生机制,所谓伴生,就是在语言层面上,把static成员和非static成员用不同的表达方式,class和object,但双方具有相同的package和name,但是最终编译器会把他们编译到一起,这是纯粹从语法层面上的约定.通过javap可以反编译看到.另外一个小魔法就是单例,单例本质上是通过伴生机制完成的,直接由编译器生成一个class对象,这样至少在底层能够统一. //在…
一.Scala解释器的使用 REPL:Read(取值)-> Evaluation(求值)-> Print(打印)-> Loop(循环) scala解释器也被称为REPL,会快速编译scala代码为字节码,然后交给JVM来执行. 计算表达式:在scala>命令行内,键入scala代码,解释器会直接返回结果. 如果你没有指定变量来存放这个值,那么值默认的名称为res,而且会 显示结果的数据类型,比如Int.Double.String等等. 例如,输入1 + 1,会看到res0: Int…
访问修饰符 格式:private[x]或protected[x],x指某个所属包.类或单例对象,表示被修饰的类(或方法.单例对象),在X域中公开,在x域范围内都可以访问: private[包名]:在该包名作用域内,被修饰域都能被访问: private[类名]:在该类的作用域,被修饰域都能被访问: private[this]:仅能在包含了定义的同一对象中访问,用于保证同一类中不能被其它对象访问: 例子: package tests{     private[tests] class Test{  …
一.数组 1.定长数组和变长数组 import scala.collection.mutable.ArrayBuffer object TestScala { def main(args: Array[String]) { //初始化一个长度为8的定长数组,其所有元素均为0 val arr1 = ) //直接打印定长数组,内容为数组的hashcode值 println("arr1="+arr1) //将数组转换成数组缓冲,就可以看到原数组中的内容了 //toBuffer会将数组转换长数…
一.继承 1.1 Scala中的继承结构 Scala中继承关系如下图: Any是整个继承关系的根节点: AnyRef包含Scala Classes和Java Classes,等价于Java中的java.lang.Object: AnyVal是所有值类型的一个标记: Null是所有引用类型的子类型,唯一实例是null,可以将null赋值给除了值类型外的所有类型的变量; Nothing是所有类型的子类型. 1.2 extends & override Scala的集成机制和Java有很多相似之处,比…
一.定长数组 在Scala中,如果你需要一个长度不变的数组,可以使用Array.但需要注意以下两点: 在Scala中使用(index)而不是[index]来访问数组中的元素,因为访问元素,对于Scala来说是方法调用,(index)相当于执行了.apply(index)方法. Scala中的数组与Java中的是等价的,Array[Int]()在虚拟机层面就等价于Java的int[]. // 10个整数的数组,所有元素初始化为0 scala> val nums=new Array[Int](10)…
一.数据类型 1.1 类型支持 Scala 拥有下表所示的数据类型,其中Byte.Short.Int.Long和Char类型统称为整数类型,整数类型加上Float和Double统称为数值类型.Scala数值类型的取值范围和Java对应类型的取值范围相同. 数据类型 描述 Byte 8位有符号补码整数.数值区间为 -128 到 127 Short 16位有符号补码整数.数值区间为 -32768 到 32767 Int 32位有符号补码整数.数值区间为 -2147483648 到 214748364…
一.Scala简介 1.1 概念 Scala全称为Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长.Scala是一门综合了面向对象和函数式编程概念的静态类型的编程语言,它运行在标准的Java平台上,可以与所有的Java类库无缝协作. 1.2 特点 1. Scala是面向对象的 Scala是一种面向对象的语言,每个值都是对象,每个方法都是调用.举例来说,如果你执行1+2,则对于Scala而言,实际是在调用Int类里定义的名为+…
类 小提示:可以通过:paste进入 Scala 的多行模式,输入对应的代码块之后,按ctrl + D退出多行模式,然后再调用刚才输入的函数或者方法进行测试 //定义类,包含 field 以及方法 class HelloWorld { private var name = "0mifang" def sayHello() {print("Hello, " + name)} def getName = name } //创建类对象,并调用其方法 val helloWo…