第二章 scala语言--Object、class

第二章 scala语言–Object、class



前言

今天是学习Scala第二天打卡,本文就就今天的学习做了一些记录。


开始代码之旅

1.object定义一个main方法

代码如下(示例):

object People {
  def main(args: Array[String]): Unit = {
    println("这是一个main方法!!")
  }
}
  1. main方法种没有static,和java不一样,且main方法写在object中才生效
  2. object 相当于Java中的静态代码块,单例的
  3. object 存放静态的field和method
  4. object 有apply()方法,伴生类(参数…)会调用这个方法,创建一个伴生类对象

2.变量、常量

代码如下(示例):

  Integer num = 0  //报错
  var a=3  //变量
      a=4  //赋值不报错
  val b=4  //常量
      b=5  //赋值报错
  1. scala使用var定义变量;使用 val定义常量,取代了final
  2. scala不能像Java那样用基本类型及其包装类进行修饰

3.class、object

代码如下(示例):

 object People {
  private val name = "object:zhangsan"
  def main(args: Array[String]): Unit = {
    var p1 = new People()
    p1.printMsg()
    println(p1.name)
  }
}
class People{
  private val name = "class:zhangsan"
  def printMsg(): Unit = {
    println(s"name: ${People.name}")
  }
}

上面代码的执行结果:
在这里插入图片描述

从运行结果看:class与object互相可以访问彼此私有的内容。


4.构造器

代码如下(示例):

 class People1(sex:String){
  private val  name = "ddddd"
  println(name)
  var a: Int = 3
//  private val p1 = new People1("女") //

  println(s"people$a....")
  def printMsg(): Unit = {
    println(s"sex: ${People1.name}")
  }
}

object People1{
  private val  name = "ccccccc"
  def main(args: Array[String]): Unit = {
    var p1 = new People1("男");
    p1.printMsg()
  }
}
  1. 类里,裸露的代码是默认构造中的。有默认构造
  2. 类名构造器中的参数就是类的成员属性,且默认是val类型,且默认是private
  3. 只有在类名构造其中的参数可以设置成var,其他方法函数中的参数都是val类型的,且不允许设置成var类型

总结

以上就是今天要讲的内容,本文简单列举的学习scala过程中的一些例子。并得到以下总结:

  • 在Object中的内容都是静态的 单例的 安全的 高效

     程序的入口:main也是写在object中,且在object中是可以执行的
    
  • class中的内容就是普通内容了

     main方法写在class中就是一个普通方法,需要new 这个对象去调用该方法
    
  • 在同一个文件中时,object与class名字一致,两者互为伴生关系

    (object)对象是(class)类的伴生对象
    (class)类是(object)对象的伴生类
    互相可以访问彼此私有的内容
    
  • 作用:将静态与非静态的内容分了开来

Scala语言是一种多范式的编程语言,它集成了面向对象编程和函数式编程的特点。在Scala中,集合是一组数据结构,它们被设计用来以高效、易于使用的方式存储和操作数据。集合类型包括可变和不可变的集合,例如列表(List)、向量(Vector)、集合(Set)、映射(Map)等。 集合的一个典型应用是在数据处理和分析中,比如在大数据框架Apache Spark中,集合被广泛用于处理大规模数据集。例如,我们可以使用Scala的集合来表示一个日志文件中的数据集合,然后利用集合提供的方法来过滤出特定格式的日志条目,或者将日志条目按时间戳排序等。以下是几个应用集合的例子: 1. 数据筛选:假设有一个包含交易记录的列表,我们可以使用集合的filter方法来筛选出特定条件的交易,比如找出所有超过一定金额的交易记录。 ```scala val transactions = List(100, 200, 300, 400, 500) val expensiveTransactions = transactions.filter(_ > 300) ``` 2. 数据转换:如果我们有一组用户信息,包含姓名和年龄,我们可以使用map方法将每个用户转换为一个字符串表示的描述。 ```scala val users = List(("Alice", 23), ("Bob", 27)) val descriptions = users.map { case (name, age) => s"$name is $age years old" } ``` 3. 数据汇总:当我们处理一组数字时,我们可能想要计算它们的总和。可以使用reduce方法来实现这一点。 ```scala val numbers = List(1, 2, 3, 4, 5) val sum = numbers.reduce(_ + _) ``` 4. 分组与聚合:如果我们有一系列的订单,每个订单包含一个产品和数量,我们可以使用groupBy方法按产品进行分组,然后用mapValues方法对每个分组的数量进行求和。 ```scala val orders = List(("apple", 3), ("orange", 2), ("apple", 1), ("banana", 5)) val groupedOrders = orders.groupBy(_._1).mapValues(_.map(_._2).sum) ``` 通过这些例子,我们可以看到Scala集合的强大功能和在数据处理中的实际应用。它们提供了一系列丰富的操作,可以方便地进行数据操作和转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值