第一章 Scala概述

本文从为何学习Scala入手,讲解了Scala与Java在JVM上的关系,特别是伴生类与伴生对象的概念,以及Scala编程中的一些基本代码规范。Spark的普及推动了Scala的发展,而理解Scala的JVM实现对于Java程序员尤为重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、为什么学习scala

二、scala和java的关系

1.JVM

 2.Scala 和 Java 关系

 3.scala伴生类与伴生对象

一、为什么学习scala

1)Spark—新一代内存级大数据计算框架,是大数据的重要内容。

2)Spark就是使用Scala编写的。因此为了更好的学习Spark, 需要掌握Scala这门语言。

3)Spark的兴起,带动Scala语言的发展

二、scala和java的关系

1.JVM

1)JVM定义

JVM是Java Virtual Machine的缩写。它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机。

JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了个虚拟机一样),当然,JVM执行字节码时实际上还是要解释成具体操作平台的机器指令的。

通过JVM,Java实现了平台无关性,Java语言在不同平台运行时不需要重新编译,只需要在该平台上部署JVM就可以了。因而能实现一次编译多处运行。(就像是你的虚拟机也可以在任何安了VMWare的系统上运行)

2)JVM体系

JVM主要包括:程序计数器(Program Counter),Java堆(Heap),Java虚拟机栈(Stack),本地方法栈(Native Stack),方法区(Method Area)

 3)JVM原理

JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。

4)JRE/JDK/JVM是什么关系

  • JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。
  • JDK(Java Development Kit)是程序开发者用来来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
  • JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。
     

 2.Scala 和 Java 关系

 三、scala伴生类与伴生对象

1、用class修饰的为伴生类,与java中的类相似,用object的修饰的为伴生对象,为的是解决scala中没有static关键字的问题。

2、伴生类与伴生对象可相互访问各自私有成员

3、伴生对象可为伴生类增加静态成员

object Student {//伴生对象
  private val occupation:String="student"
  def main(args: Array[String]): Unit = {
    println('s')
  }
}
 
class Student(Id:Int,Name: String) {//伴生类
 
  def printInfo():Unit={
    println("学号:"+this.Id +" 姓名:" + this.Name +" 职业:" + Student.occupation)
  }
}

如上,scala的设计者认为java中有static关键字,所修饰的是面向类的,而不是面向对象的,认为这不是真正的面向对象,所以在scala中将static关键字删掉了,但为了实现类似scala中的功能,引入了伴生对象的概念。

object Test {
  def main(args: Array[String]): Unit = {
    val student1 = new Student(123, "张三")
    val student2 = new Student(124, "李四")
    student1.printInfo()
    student2.printInfo()
  }
}

输出 :学号:123 姓名:张三 职业:student
            学号:124 姓名:李四 职业:student

伴生对象相当于Java中的静态类,类似于单例模式。通常在里面放一些class共享的内容。

综述:

  • 当一个单例对象和它的同名类一起出现时,这时的单例对象被称为这个同名类的“伴生对象”(带有object的)。相应的类被称为这个单例对象的“伴生类”(带有class的
  • 类和它的伴生对象必须存在于同一个文件中,可以相互访问私有成员
  • 没有同名类的单例对象,被称为孤立对象(standalone object)。一般情况下,Scala程序的入口点main方法就是定义在一个孤立对象里。

四、代码规范

(1)使用一次 tab 操作,实现缩进,默认整体向右边移动,用 shift+tab 整体向左移

(2)或者使用 ctrl + alt + L 来进行格式化

(3)运算符两边习惯性各加一个空格。比如:2 + 4 * 5。
(4)一行最长不超过 80 个字符,超过的请使用换行展示,尽量保持格式优雅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值