Scala概述及变量和常量的重点

news/2024/11/8 12:05:39/

1.什么是scala

Scala是一种多范式的编程语言(多范式:多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法),其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序
官网:https://www.scala-lang.org/
在这里插入图片描述
Scala以一种简洁的高级语言结合了面向对象和函数式编程。 Scala的静态类型有助于避免复杂应用程序中的bug,它的JVM和JavaScript运行时让您能够轻松地构建高性能系统,并轻松访问巨大的库生态系统。

2.我们为什么要学习scala呢?

  1. 优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
  2. 速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。
  3. 能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。
  4. spark分布式运算框架是scala语言编写的

3.scala和java的关系

正常情况下,会scala的程序员都是会Java的,scala是基于java的,所以我们先搞清楚java,scala和jvm的关系

在这里插入图片描述

变量和常量

// 回顾:Java 变量和常量语法
// 变量类型 变量名称 = 初始值 
int a = 10
// final 常量类型 常量名称 = 初始值 
final int b = 20
// var 变量名 [: 变量类型] = 初始值 
var i:Int = 10   variable :可变的
// val 常量名 [: 常量类型] = 初始值 
val j:Int = 20   value :值var variable  可变的   代表声明变量val  value  值    代表声明常量

注意:

  • val 在编程的过程中我们大部分的操作是获取值或者是获取一个创建好的对象,然后操作对象中的属性,很少改变这个对象变量
  • val 是线程安全的 , 在使用的时候效率更高
  • 优先使用val ,但是当变量后续的需要变化的时候使用var

练一练:

  1. 声明变量时,类型可以省略,编译器自动推导,即类型推导
  2. 类型确定后,就不能修改,说明 Scala 是强数据类型语言。
  3. 变量声明时,必须要有初始值
  4. 在声明/定义一个变量时,可以使用 var 或者 val 来修饰,var 修饰的变量可改变,val修饰的变量不可改。
  5. var 修饰的对象引用可以改变,val 修饰的对象则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)
package com.doitedu.demo02
object TestVar {def main(args: Array[String]): Unit = {//(1)声明变量时,类型可以省略,编译器自动推导,即类型推导var age = 18age = 30//(2)类型确定后,就不能修改,说明 Scala 是强数据类型语言。
// age = "zhangsan" // 错误//(3)变量声明时,必须要有初始值
// var name //错误
//(4)在声明/定义一个变量时,可以使用 var 或者 val 来修饰,var 修饰的变量可改变,val 修饰的变量不可改。var num1 = 10 // 可变val num2 = 20 // 不可变num1 = 30 // 正确//num2 = 100 //错误,因为 num2 是 val 修饰的} 
}
object demo03{def main(args: Array[String]): Unit = {// p1 是 var 修饰的,p1 的属性可以变,而且 p1 本身也可以变var p1 = new Person()p1.name = "zhangsan"p1 = null// p2 是 val 修饰的,那么 p2 本身就不可变(即 p2 的内存地址不能变),
但是,p2 的属性是可以变,因为属性并没有用 val 修饰。val p2 = new Person()p2.name="jinlian"
// p2 = null // 错误的,因为 p2 是 val 修饰的} 
}
class Person{var name : String = "jinlian"
} 

http://www.ppmy.cn/news/337019.html

相关文章

软件设计说明书大纲

《软件需求分析与设计》课程综合实践 项目名称:《XX培训机构教学管理系统》 设计说明书 学院: 班级: 小组成员: 1引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 2总体设计 2.1需求规定 2.2运行环境 2.3基本设计概念 2.4…

【Python开发】FastAPI 10:SQLAlchemy 数据库操作

在 FastAPI 中使用 SQL 数据库可以使用多个 ORM 工具,例如 SQLAlchemy、Tortoise ORM 等,类似 Java 的 Mybatis 。这些 ORM 工具可以帮助我们方便地与关系型数据库进行交互,如 MySQL 、PostgreSQL等。本篇文章将介绍如何使用 SQLAlchemy 来完…

深度剖析整形数据在内存中的存储

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。 c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。 本章来学习数据的存储。 让我们开启c语言学…

【实战】体验SadTalker

论文http://openaccess.thecvf.com//content/CVPR2023/papers/Zhang_SadTalker_Learning_Realistic_3D_Motion_Coefficients_for_Stylized_Audio-Driven_Single_CVPR_2023_paper.pdf github GitHub - OpenTalker/SadTalker: [CVPR 2023] SadTalker:Learning Realist…

家用智能投影仪首选,走进极米H3S投影

5年前装修新房,大多数小伙伴都在纠结选择55英寸还是65英寸的电视机。但是最近2年,家用投影机早已成为时尚家用的必备数码产品。 面对家用投影机市场琳琅满目的商品,很多普通消费者都挑花了眼。尤其是对于追求大屏沉浸感,又不想割舍高清画质,同时还在意健康护眼的消费者来说,选择…

投影仪显示服务器不能连接不上,极米投影仪常见故障和自助解决方案?

一、投影仪出现不通电的原因: 1、出现这种情况的原因主要是电源板有问题,电源板无法给主板供电; 2、另外点灯板有问题的话也坏导致不通电(占60%); 3、主板有问题的话也会导致不通电(占40%); 二、投影仪灯泡点不亮的原因: 1、灯泡坏了,导致灯泡点不亮; 2、点灯板有故障…

动态规划dp —— 21.乘积最大子数组

1.状态表示 是什么?dp表中里的值所表示的含义就是状态表示 因为要考虑负数情况,负数乘以最大数就等于最小数了,负数乘以最小数就是最大数了 f[i]表示:以i位置为结尾的所以子数组中最大乘积 g[i]表会:以i位置为结尾…

极米投影仪: U盘安装APP

今天,突然想安装APP,可是我的极米投影仪没找到入口。后来到官方群里边看到了一个重命名APK的方式,总结如下: 下载APK 比方说,安装《沙发管家》APP。http://www.shafa.com/ 下载好了APP安装包: 沙发管家V…