【Scala】01 基础了解
Features 特性
1、基于JVM,完全兼容Java
2、同样具有跨平台,可移植,垃圾回收
3、比Java更加的面向对象【完全面向对象】
4、函数式编程
5、面向大数据处理,对集合容器框架有一定的增强
6、是Spark的底层
History 发展历史
Pizza & Scala
JDK1.5 的泛型、增强FOR、自动类型转换
JDK8.0 类型推断、Lambda表达式
Download 下载
官网下载地址:
- https://www.scala-lang.org/download/
现在是分了3和2两种大版本,我看的教程都是讲2的
所以这里找到是2版本:
点进去之后拉到最下面才是安装包的下载地址(总是放在一些你看不到的位置):
Installation 安装
MSI安装版直接无脑下一步就行, 我这里下的是解压版,还需要自己手动配置环境变量
然后在Path变量里面追加一个:
- %SCALA_HOME%\bin
保存关闭之后,在Win + R打开cmd,输入命令scala。
如果开启了SHELL模式,这样就行了
- C:\Users\Administrator>scala
- Welcome to Scala 2.13.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_291).
- Type in expressions for evaluation. Or try :help.
- scala>
With IntelliJ IDEA 与IDEA的配置:
首先IDEA需要安装支持Scala的一个插件工具
搜索插件市场可以直接找到,下载安装
然后在创建项目的时候,对项目名称右键添加框架,选择Scala框架:
首次安装需要让IDEA知道SDK在哪,SDK就是我们下载的Scala包,这里要提供给IDEA路径位置
如果没有,IDEA也提供下载来实现
Scala独有的程序单元:
编写一个Hello.scala(选择Object创建)
- object Hello {
- def main(args : Array[String]) : Unit = {
- println("Hello Scala")
- }
- }
Scala支持原生Java语法
- object Hello {
- def main(args : Array[String]) : Unit = {
- println("Hello Scala")
- System.out.println("Hello Scala By Origin Java Syntax")
- }
- }
笔记:
- /**
- * 关键字 object 声明一个单例对象 通过一个HelloScala的派生类创建的实例
- * main 从外部可以直接调用的方法
- * def 方法名称(参数名称: 参数类型):返回类型 = {方法体}
- *
- */
- object HelloScala {
- def main(args: Array[String]): Unit = {
- println("hello scala")
- }
- }
反引号修饰变量名:
- /**
- * 或者是使用反引号处理
- * 这样定义允许声明任意字符
- */
- val `hero-name` = "asdas"
- // 调用的时候也需要加上反引号
- println(`hero-name`)
操作符声明:
- /**
- * 可以支持以操作符的变量声明
- * 但是操作符不可以和数字字符结合声明
- */
- val -+%#@ = "asadas"
支持模版语法和格式化组合处理:
- /**
- * 支持模版语法和格式化输出同时结合使用
- */
- val π = 3.14
- print(f"the π is ${π}%2.4f")
打印结果:
- the π is 3.1400
Syntax Of Scala Scala语法
声明变量
Java语法:
- int val = 100;
Scala语法:
- var val:Int = 100
变量和常量:
Java:
- int a = 100; // 变量
- final int b = 200; // 常量
Scala:
- var a:Int = 120 \\ 变量
- val b:Int = 130 \\ 常量
注意是【var】和【val】
自动类型推导:
类似JavaScript,声明只需要知道常量变量和字面值是什么即可
- var num = 100
常量和引用问题:
- object Hello {
- def main(args : Array[String]) : Unit = {
- val p = new P
- // p = null // × 常量p不能改变引用
- p.name = "others value" // √ p指向的对象的其他属性允许改变
- }
- }
- class P {
- var name : String = "none"
- }
多行字符串的处理:
- object Hello {
- def main(args : Array[String]) : Unit = {
- var sql =
- """
- | SELECT
- | A.columnName1,
- | A.columnName2,
- | B.columnName3
- | FROM
- | tableName1 A
- | JOIN tableName2 ON A.columnName1 = B.columnName2
- | AND associateCondition1
- | AND associateCondition1
- | WHERE
- | 1 = 1
- | AND condition 1
- | AND condition 2
- |""".stripMargin
- }
- }
支持模板语法:
注意前面要加一个s
- object Hello {
- def main(args : Array[String]) : Unit = {
- val name = "小明"
- val age = 29
- var sql =
- s"""
- | SELECT
- | A.columnName1,
- | A.columnName2,
- | B.columnName3
- | FROM
- | tableName1 A
- | JOIN tableName2 ON A.columnName1 = B.columnName2
- | AND associateCondition1
- | AND associateCondition1
- | WHERE
- | 1 = 1
- | AND condition 1
- | AND condition 2
- | AND name = "$name"
- | AND age = "$age"
- |""".stripMargin
- }
- }
数据类型:
Scala脱离C的影子,完全由对象支配
scala.Any 等同于 java.lang.Object,是所有数据类型的基类
子类划分为AnyVal(任意字面值)和 AnyRef(任意引用)
特殊类型:
Unit:
- print(Unit)
- `Unit` companion object is not allowed in source; instead, use `()` for the unit value
- print(Unit)
按照提示的意思,更换成空括号就能打印这个空实例了
- print(())
Null:
Nothing:
2、一些不同
public 修饰符 scala中没有public关键字,如果不声明访问权限,那么就是公共的
static 修饰符 scala中没有静态语法,所以不存在static关键字
void 类型,Java中表示空,没有返回值,在scala中改用Unit来表示
方法声明需要在方法前缀def
方法的实现赋值给方法声明,所以需要等号连接
Scala是Full Complete OOP,全面向对象语言,没有静态语法
如果要调用静态语法,使用【半对象单例】来调用
读写文件操作
- // 读取操作
- // 调用scala.io.Source类的fromFile方法 ,入参文件路径
- val bufferedSource = Source.fromFile("C:/Users/Administrator/Desktop/SqlTemplate.sql")
- // 逐行遍历打印内容
- bufferedSource.foreach(print)
- // 写入文件操作
- val writer = new PrintWriter(new File("C:/Users/Administrator/Desktop/ScalaWriteTest.sql"));
- writer.write("testing for scala write files")
- writer.close()
数据类型强转:
- val aaa : Int = 2.5.toInt
三元运算操作:
- val res = if(a) "res1" else "res2"
范围遍历:
- // 范围遍历
- for(i <- 1 to 100) {
- println(1)
- }
【Scala】01 基础了解的更多相关文章
- 相见恨晚的 scala - 01 [ 基础 ]
简洁到不行,多一个分号都是不应该. 学习笔记: centOS 下安装 scala 和安装 jdk 一毛一样 . 1 . 不同于 Java 的变量声明 :( 但是和 js 很像 ) /** * Crea ...
- Java 之 I/O 系列 01 ——基础
Java 之 I/O 系列 目录 Java 之 I/O 系列 01 ——基础 Java 之 I/O 系列 02 ——序列化(一) Java 之 I/O 系列 02 ——序列化(二) 整理<疯狂j ...
- Scala 语法基础
一 简介 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性.Scala 运行在Java虚拟机上,并兼容现有的Java程序.Scal ...
- Scala零基础教学【1-20】
基于王家林老师的Spark教程——共计111讲的<Scala零基础教学> 计划在9月24日内完成(中秋节假期之内) 目前18号初步学习到25讲,平均每天大约完成15讲,望各位监督. 初步计 ...
- linux 01 基础命令
linux 01 基础命令 对于Linux要记住一个概念,一切皆文件,哪怕是目录,也是一个文件 1.修改用户密码 sudo passwd pyvip@Vip:~$ #pyvip表示用户名, Vip表示 ...
- Scala语言基础
1. Scala语言的特点 a. 多范式编程语言,面向对象(抽象.封装)和函数式(过程.结果)编程 b. 代码简洁 ==>可读性较差 c. 代码会被变异成Java字节码,运行在JVM上 2. S ...
- 01.基础架构:一条SQL查询语句是如何执行的?学习记录
01.基础架构:一条SQL查询语句是如何执行的?学习记录http://naotu.baidu.com/file/1c8fb5a0f2497c3a2655fed89099cb96?token=ff25d ...
- 01 基础版web框架
01 基础版web框架 服务器server端python程序(基础版): import socket server=socket.socket() server.bind(("127.0.0 ...
- Scala语法01 - 基础语法
- 3.Scala语法01 - 基础语法
随机推荐
- windows隐藏文件如何查看
1.组织 2.查看 3.显示隐藏文件
- thinkpad-内置电池关闭方法
-- -- 进入BIOS- Power- Disable Built-in Battery - 选择yes是关闭 (No打开内置电池)
- 玉炜的iOS开发规范(12.14更新)
苹果账号篇 1.新建一个新项目之后的bundle ID无论是否定没定,上架的账号如果没定,最好先写一个绝对用不上的名字,因为这个bundle ID一经确定会被绑定在当前你的苹果账号上,如果正好绑定的是 ...
- STM32 CubeMX 学习:有关说明
背景 STM32 是我以前学过的,而很久没有整理过的.因为之前学习的时间比较早,再加上各种资料要么不成熟,要么不齐全:再加上自己一开始没有比较完善的学习经验:以至于我的学习并不扎实. 趁着 STM 的 ...
- 开发板测试手册——USB 4G 模块、GPS 定位功能操作步骤详解(3)
目录 4 USB 4G 模块测试 41 4.1 网络功能测试 42 4.2 短信功能测试 43 4.3 GPS 定位功能测试 44 4.4 通话功能测试 45 4.5 测试程序编译 46 5 USB ...
- 福利来了!MoneyPrinterPlus可以自动配置环境和自动运行了
之前开源了MoneyPrinterPlus,可以实现批量混剪视频,一键生成视频和自动发布视频的功能. 但是经常会看到小伙伴在安装过程中遇到很多问题.所以这篇文章的目的就是告诉大家怎么使用MoneyPr ...
- JAVA文件的编译
编译实际就是翻译,是将人类易读(为啥?因为开发语言的目的就是为了让人容易使用)的语言转换为机器或程序易读的语言.Java的编译器是javac,它将.java文件编译为.class文件,也就字节码文件. ...
- MySql 数据库、数据表操作
数据库操作 创建数据库 语法 语法一:create database 数据库名 语法二:create database 数据库名 character set 字符集; 查看数据库 语法 查看数据库服务 ...
- 使用requests库实现http请求
1.发送请求 import requests url = 'http://www.tipdm.com/tipdm/index.html' rqq = requests.get(url) In [ ]: ...
- Vscode控制台乱码的最终解决方案
Vscode控制台乱码的最终解决方案 vscode运行项目时控制台打印日志乱码.网上也有许多解决办法. 方法一[管用]推荐,避免过多设置 Java项目时,像Springboot微服务项目默认使用的是l ...