Scala 中 case class 与 class 的区别(代码示例)

class 类似Java中的class

case class 被称为样例类,是一种也输的类,常被用于模式匹配

具体区别:

1,初始化的时候可以不用new ,也可以加上,但是普通类必须加上new

2,默认实现了equals、hashCode方法

3,默认是可以序列化的,实现了Serializable

4,case class 构造函数参数是public的,我们可以直接按访问

5,case class默认情况下不能修改属性值

7,case class 最重要的功能,支持模式匹配,这也是定义case class的重要原因

样例代码:

 1 case class Iteblog(name:String)
 2
 3 object TestScala {
 4
 5   def main(args: Array[String]): Unit = {
 6
 7     val iteblog = new Iteblog("iteblog_hadoop")
 8
 9     val iteblog2 = Iteblog("iteblog_hadoop")
10
11     println(iteblog == iteblog2)
12
13     println(iteblog.hashCode)
14
15     println(iteblog2.hashCode)
16   }
17
18 }

原文地址:https://www.cnblogs.com/smartisn/p/12208750.html

时间: 2024-10-07 12:51:53

Scala 中 case class 与 class 的区别(代码示例)的相关文章

Scala 深入浅出实战经典 第51讲:Scala中链式调用风格的实现代码实战及其在Spark中应用

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/5uuKOP38d6s/优酷:http://v.youku.com/v_show/id_

在Scala中函数和方法有什么区别

方法可以作为一个表达式的一部分出现(调用函数并传参),但是方法(带参方法)不能作为最终的表达式, 但是函数可以作为最终的表达式出现: scala> //定义一个方法 scala> def m(x:Int) = 2*x m: (x: Int)Int scala> //定义一个函数 scala> val f = (x:Int) => 2*x f: Int => Int = <function1> scala> //方法不能作为最终表达式出现 scala&g

第51讲:Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用

今天学习了下scala中的链式调用风格的实现,在spark编程中,我们经常会看到如下一段代码: sc.textFile("hdfs://......").flatMap(_.split(" ")).map(_,1).reduceByKey(_ + _)........ 这种风格的编程方法叫做链式调用,它的实现方法见下面的代码: class Animal {def breathe : this.type = this}class Cat extends Animal

Scala中链式调用风格的实现代码实战及其在Spark编程中的广泛运用之Scala学习笔记-41

package com.leegh.parameterization /** * @author Guohui Li *///由于breathe返回的是this,scala将返回类型推断为Animal,而由于Animal没有eat方法//class Animal { def breathe = this }//class Cat extends Animal { def eat = this } class Animal { def breathe: this.type = this }clas

mysql数据库中的union和union的区别(示例演示)

一.前期准备 1,安装了mysql数据库(自行百度“如何安装mysql数据库”) 2,了解一定的SQL查询等基本知识 3,推荐:为了便于使用mysql,可以安装数据库图形管理工具DBeaver. 二.进入正题 画龙点睛:union 是对数据进行并集操作,不包括重复行,同时进行默认排序而Union all 是对数据进行并集操作,包括重复行,不进行排序.如果想看示例请接着往下看. 1,建表准备数据 CREATE TABLE `student` ( `stu_id` int(20) NOT NULL

转载: scala中span和partition区别

scala中的partition span splitAt groupBy 可把Collection分成:满足条件的一组,其他的另一组. partitionspan List(1,9,2,4,5).span(_<3)       // (List(1),List(9, 2, 4, 5)),碰到不符合就结束 List(1,9,2,4,5).partition(_<3) // (List(1, 2),List(9, 4, 5)),扫描所有 splitAt // (List(1, 3),List(5

Scala中 object 和 class的区别

object 在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式,例如Array.toString.对象的构造器在第一次使用的时候会被调用,如果一个对象从未被使用,那么他的构造器也不会被执行:对象本质上拥有类(scala中)的所有特性,除此之外,object还可以一扩展类以及一个或者多个特质:例如, abstract class ClassName(val parameter){} object Test exte

Scala 中Array,List,Tuple的区别

虽然学了一段时间的Scala了,但是总觉得基础不是太扎实,还有很多的基础知识比较模糊,于是最近又打算重新学习基础. Scala中的三种集合类型包括:Array,List,Tuple.那么到底这三种有哪些异同呢?说实话,我之前一直没弄明白,所以今天特意花了点时间学习了一下. 相同点: 1.长度都是固定的,不可变长 2.早期的Scala版本,Array.List都不能混合类型,只有Tuple可以,2.8版本以后,3者的元素都可以混合不同的类型(转化为Any类型) 不同点: 1.Array 中的元素值

Scala中 =&gt; Unit 与 () =&gt;Unit的区别

() => Unit ---> 是一个函数:=> Unit --> 是一个执行结果为Unit的表达式 code: => Unit是 by name 传递参数.参数是一个返回值为Unit的代码块.在传递的时候,参数没有被调用.比如: def test(code : => Unit){ println("start") code // 这行才会调用传入的代码块,写成code()亦可 println("end") } test{// 此