学习笔记——Scala对象、函数和方法(1)

作为开发Spark重要的代码之一Scala,是学习Spark之前必须要了解到的一门语言,相比之前接触过的java,scala更像是一个面向对象+面向函数的编程语言,其中的函数非常丰富,代码机制非常简单,配合起Spark的开发可谓是得心应手,相同的功能模块下,scala仅仅只需要用几行就能代替java所写的相同内容;或许你会问到为什么不用python,spark的API兼容性与python非常差,许多API还没有需要自己去创建,创建的过程十分费工夫,所以在Spark开发中大多用到的是scala,其次是java。
本篇文章主要是写给自己复习回顾用的,不太适合么有编程基础的来阅读,有些地方写的比较深入,感谢大家的理解。

一、Scala的介绍

Scala的特性

1.java和scala可以混编。
2.类型推测,可以自动推测类型。
3.并发并且有分布式
4.特质特征
5.模式匹配
6.高阶函数
在Spark1.6中使用的是scala2.10,在Spark2.0版本以上使用的是scala2.11,Spark可以分为三大趋势,1.6以前,1.6+和2.0+,在后续的Spark学习中会介绍其中的底层区别。

二、Scala的基础

1.数据类型
  • Byte:8bit的有符号数字,范围在-128~127之间
  • Short:16bit的有符号数字,范围在-32768~32767之间
  • Int:32bit的有符号数字
  • Long:64bit的有符号数字,
  • Float:32bit,单精度浮点数
  • Double:64bit,双精度浮点数
  • Char:16bit,Unicode字符,U+0000~U+FFFF
  • String:字符串类型
  • Boolean:布尔类型
  • Unit:表示空值,和其他语言中void等同
  • Null:空值或者空引用
  • Nothing:所有类型的子类,表示没有值
  • Any:所有类型的父类,任何实例都属于Any类型
  • AnyRef、AnyVal:所有引用、值类型的父类
2.变量和常量的声明
/**
     * 定义变量和常量
     * 变量 :用 var 定义 ,可修改 
     * 常量 :用 val 定义,不可修改
     */
    var name = "zhangsan"
    println(name)
    name ="lisi"
    println(name)
    val gender = "m"
//    gender = "m"//错误,不能给常量再赋值

3.类和对象
创建类和对象
class Person{
   }
//创建类
object Person1{
   }
//创建对象

注意:object中不可以穿参,如果需要传参,要用apply方法

伴生类和对象
class Person(xname :String , xage :Int){
   
  var name = Person.name
  val age = xage
  var gender = "m"
  def this(name:String,age:Int,g:String){
   
    this(name,age)
    gender = g
  }
  
  def sayName() = {
   
    "my name is "+ name
  }

}

object Person {
   
  val name = "zhangsanfeng"
  
  def main(args: Array[String]): Unit = {
   
    val person = new Person("wagnwu",10,"f")
    println(person.age);
    println(person.sayName())
    println(person.gender)
  }
}

输出:
10
my name is zhangsanfeng
f

注意点:

  • scala 中的object是单例对象,相当于java中的工具类,可以看成是定义静态的方法的类。object不可以传参数。另:Trait不可以传参数
  • scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。
    重写构造函数的时候,必须要调用默认的构造函数。
  • class 类属性自带getter ,setter方法。
  • 使用object时,不用new,使用class时要new ,并且new的时候,class中除了方法不执行,其他都执行。
  • 如果在同一个文件中,object对象和class类的名称相同,则这个对象就是这个类的伴生对象,这个类就是这个对象的伴生类。可以互相访问私有变量。
4.if…else…
val age 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值