关键词:
大数据学习06 Scala的基础语法
介绍Scala的基础语法
文章目录
前言
上一文章介绍了Scala的入门级项目,现在来学习Scala的基础语法
一、注释
和java一样
单行注释为//
多行注释为
/*
*
*
*/
二、变量与常量
1.基本语法
var 变量名 [:变量类型]=初始值 var i:Int=10
val 常量名 [:常量类型]=初始值 val j:Int=20
注意:能用常量的地方不用变量
2.代码实操
代码如下(示例):
package chapter02
import chapter01.Student
object Test02_variable
def main(args: Array[String]): Unit =
//声明一个变量的通用语法
var a:Int=10;
//(1)声明变量时,类型可以省略,编译器自动推导
var a1=10
val b1=23
//(2)类型确定后,就不能更改,说明Scala是强数据类型语言
var a2=15//a2为Int
//a2=1.5 //会报错
//(3)变量声明时必须有初始值
//var a3:Int
//(4) 在声明定义一个变量时,可以使用var或者vral来修饰,var修饰的变量可以改变,val修饰的变量不可以改变
a1=11
//b1=20 //会报错
var lll = new Student("lll", 11)
lll=new Student("All",20)
lll.printInfo()
lll=null
var bbb=new Student("bbb",23)
bbb.printInfo()
//为了让其可以更改,需要在Student类中的age属性前加上var
bbb.age=20
bbb.printInfo()
package chapter01
class Student(name: String, var age: Int)
def printInfo(): Unit =
println(name +" "+age+" "+Student.school)
//伴生对象
object Student
val school:String="YSU"
def main(args: Array[String]): Unit =
val lll= new Student("lll", 22)
lll.printInfo()
三、标识符的命名规范
Scala对各种变量、方法、函数等命名时使用的字符序列称为标识符。即:凡是自己可以起名字的地方都叫标识符
1.命名规范
(1)以字母或下划线开头,后接字母、数字、下划线
(2)以操作符开头,且质保函操作符( + - * / # ! 等)
(3)用反引号’……'包括任意的字符串,即使是Scala关键字也可以
2.字符串输出
类似java
(1)字符串,通过+号连接
(2)printf用法::字符串,通过%传值
(3)字符串模板(插值字符串):通过$获取变量值:s,f,raw
package chapter02
object Test04_String
def main(args: Array[String]): Unit =
//字符串,通过+连接
val name:String="all"
val age=11
println(name+":"+age)
//*用于讲一个字符串复制多次拼接
println(name * 5)
//(2)printf用法::字符串,通过%传值
printf("%d岁的%s开始学习了\\n",age,name)
//(3)字符串模板(插值字符串):通过$获取变量值
println(s"$age岁的$name开始学习模板字符串")
val num:Double=2.34567
println(s"the number is $num")
//格式化字符串
println(f"the number is $num%2.2f")
//raw转义字符等任何字符都会被原封不动的输出
println(raw"the number is $num%2.2f")
//三引号表示字符串,保持多行字符串的原格式输出
val sql=s"""
|select *
|from
| student
|where
| name=#name
|and
| age>$age
|""".stripMargin
println(sql)
3.调试效果
四、控制台标准输入
1.代码实现
package chapter02
import scala.io.StdIn
object Test05_StdIn
def main(args: Array[String]): Unit =
//输入信息
println("请输入您的姓名:")
val name:String=StdIn.readLine()
println("请输入您的年龄:")
val age=StdIn.readInt()
//控制台打印输出
println(s"欢迎$age岁的$name来此学习")
2.调试效果
五、IO文件读取
1.代码实现
package chapter02
import java.io.File, PrintWriter
import scala.io.Source
object Test06_FileIO
def main(args: Array[String]): Unit =
//1. 从文件中读取数据
Source.fromFile("src/main/resources/test.txt")foreach(print)
//2.将数据写入文件
val writer=new PrintWriter(new File("src/main/resources/OutPut.txt"))
writer.write("一个人热切地想得到的东西,想从拥有它们的人手里得到\\n" +
"或者夺到的东西,往往总是被那些人死死地看守住的\\n" +
"因而,我们的过错\\n" +
"十有八九是在‘必需如此’的似是而非的借口下铸成的。")
writer.close()
2.调试结果
六、数据类型
Java的基本类型:char,byte,short,int,long,float,double,boolean
Java的引用类型:(对象类型)包装类:Character,Byte,Short,Integer,Long,Float,Double,Boolean
Scala的数据类型
1.数据类型的说明
1)Scala中一切数据类型都是对象,都是Any的子类
2)Scala中数据类型分为两大类:数值类型(AnyVal)、引用类型(AnyRef),不管是值类型还是引用类型都是对象
3)Scala数据类型仍然遵守低精度的值类型向高精度值类型,自动转换(隐式转换)
4)Scala中的StringOps是对Java中的String增强
5)Unit对应Java中的Void,用于方法返回值的位置,表示方法没有返回值。Unit是一个数据类型,只有一个对象就是**()**,void不是数据类型,只是一个关键字
6)Null是一个类型,只有一个对象就是null。它是所有引用类型(AnyRef)的子类。
7)Nothing,是所有数据类型的子类,主要用于在一个函数没有明确的返回值时使用,因为这样,我们可以把跑出的返回值,返回给任何的变量或者函数。
2.Util类型,Null类型和Nothing类型
数据类型 | 描述 |
---|---|
Unit | 表示无值,和其他语言中void等同,用作不返回任何结果的方法的结果类型,Unit只有一个实例值,写成() |
Null | null,Null类型只有一个实例null |
Nothing | Nothing类型在Scala的类层次最低端;它是任何其他类型的子类型。当一个函数,我们确定没有正常的返回值,可以用Nothing来制定返回类型,这样有一个好处,就是我们可以把返回的值(异常)赋值给其他的函数或者变量(兼容性) |
3.代码实操
package chapter02
import chapter01.Student
object Test07_DataType
def main(args: Array[String]): Unit =
def m1():Unit=
println("m1被调用执行")
//1.Unit
val a=m1()
println("a:"+a)
//2.空引用Null
val n=1
// val n:Int=null
//值类型无法连接空引用
var student=new Student("all",18)
student=null
println(student)
//5.3 Nothing
def m2(n:Int):Int=
if(n==0)throw new NullPointerException
return n
// val b=m2(0)
// print(b)
val c=m2(3)
print(c)
4.调试结果
总结
以上是Scala的基础语法
scala简介及基础语法(代码片段)
...成了面向对象和函数式编程的特点。运行在JVM(jdk)。大数据中为什么学习scala?spark是scala语言编写。python写spark挺好的java写spark很糟糕(代码实在是太多了)scala写spark很完美二、scala特点1)优雅框架设计中第一个要考虑的问题就是... 查看详情
scala学习之一scala基础语法(代码片段)
...可以从Java应用程序中调用Scala的代码(2)Spark是专为大规模数据处理而设计的快速通用的计算引擎,而spark就是scala编写的。(3)对比Groovy和Scala:Groovy的优势在于易用性以及与Java无缝衔接,Scala的优势在于性能和一些高级特性一、数... 查看详情
大数据scala学习—列表集与映射
...组一、列表列表(List)是Scala中最重要的,也是最常用的一种数据结构。它存储的数据,特点是:有序,可重复。在Scala中,列表分为两种,即:不可变列表和可变列表。解释:1.有序的意思并不是排序,而是指元素的存入顺序和取出顺序... 查看详情
大数据scala学习—列表集与映射
...组一、列表列表(List)是Scala中最重要的,也是最常用的一种数据结构。它存储的数据,特点是:有序,可重复。在Scala中,列表分为两种,即:不可变列表和可变列表。解释:1.有序的意思并不是排序,而是指元素的存入顺序和取出顺序... 查看详情
大数据学习之scala语言基本语法学习36
...成了面向对象和函数式编程的特点。运行在JVM(jdk)。大数据中为什么学习scala?spark是scala语言编写。python写spark挺好的java写spark很糟糕(代码实在是太多了)scala写spark很完美二:scala特点1)优雅框架设计中第一个要考虑的问题就是... 查看详情
scala基础语法之trait详解(代码片段)
▼Scala系列学习笔记:Scala概述与开发环境配置Scala基础学习之运算符Scala基础学习之for循环和while循环一文掌握scala中的方法和函数Scala基础:类和对象、访问修饰符和构造器Scala的继承和抽象类本章节目标能够使用trait独... 查看详情
大数据学习——scala入门练习(代码片段)
packagecom/***CreatedbyZXon2015/11/6.*/objectVariableDemodefmain(args:Array[String])//1定义变量-----------------------------------------//使用val定义的变量值是不可变的,相当于java里用final修饰的变量vali=1//使用var定义的变量是可变得,在Scal 查看详情
小白学es06-通过kibana学习es的基础语法(代码片段)
...文档2.5删除商品:删除文档1document结构ES是一款面向文档的数据搜索、分析引擎.document结构说明:(1)基于面向对象的开发思想,应用系统中的数据结构都是很复杂的:对象中嵌套对象,如CRM系统中的客户对象中,还会嵌入客户 查看详情
如何快速学习scala(代码片段)
大数据学习过程中,会学习非常多的技术,但SCALA无疑是必不可少,那我们在大数据技术的学习过程中,如何快速的认识scala,并且学习它,感谢科多大数据公司的余老师提供的详细素材,本人整理成章,希望对你们有帮助。众... 查看详情
scala基础语法(代码片段)
...值3字符串3.1使用双引号3.2使用插值表达式3.3使用三引号4数据类型与操作符4.1数据类型4.2运算符4.3scala类型层次结构1.java语法类比如果你之前是一名Java程序员,并了解Ja 查看详情
scala基础语法(代码片段)
Scala-HelloWorld目标,在本地启动一个项目,能够输出helloworldhttps://www.scala-lang.org/官网提供的下载安装方式有很多种。推荐IDE:IDEA和VSCode这里我安装了IDEA,就用了它。创建scala文件的时候,提示安装Scala插件,点击安装写完helloworld... 查看详情
scala基础语法(代码片段)
Scala基础1、声明变量packagecn.gec.scalaobjectVariableDemo defmain(args:Array[String]) //使用val定义的变量值是不可变的,相当于java里用final修饰的变量 vali=1 //使用var定义的变量是可变得, 查看详情
大数据处理学习笔记1.5掌握scala内建控制结构(代码片段)
文章目录零、本讲学习目标一、条件表达式(一)语法格式(二)执行情况(三)案例演示任务1、根据输入值的不同进行判断任务2、编写Scala程序,判断奇偶性二、块表达式(一)语法格式ÿ... 查看详情
大数据之scala高级语法学习
协变案例一:classAnimal{}classBirdextendsAnimal{}classAnimal{}classBirdextendsAnimal{}//协变classCovariant[T](t:T){}valcov=newCovariant[Bird](newBird)valcov2:Covariant[Animal]=covc不能赋值给c2,因为Covariant定义成不变类型。稍 查看详情
大数据之python入门语法基础
一、python特点及简介\\python在编程语言中的排名4位简洁优雅同scala语言完成同样一个任务c语言1000行java100行scala/python20行面向过程及面向对象的语言同scala语言wordcountMapReduce基于spark使用scala进行wordcountsc.textFile(“hdfs://nn:8020/data/inp... 查看详情
scala基础函数(代码片段)
...式高并发语言Go、R、Erlang等等为何选择Scala?Spark是大数据处理的核心方式,用scala语言编写!Kafka分布式发布订阅消息系统,由LinkedIn捐给Apache,以极高的吞吐量著称,是目前最火爆的MQ,用scala语言编... 查看详情
大数据处理学习笔记1.3使用scala集成开发环境(代码片段)
文章目录零、本讲学习目标一、搭建Scala的IntelliJIDEA开发环境(一)启动IDEA(二)安装Scala插件(三)配置IDEA使用的默认JDK(四)创建Scala项目1、创建Scala项目-ScalaDemo2、创建Scala类-HelloWorld3、创建Sc... 查看详情
大数据中为什么使用scala?(代码片段)
原因:开发大数据应用程序(Spark程序、Flink程序 )Hadoop已经是我们大数据领域的事实标准了。Spark生态并不是要取代Hadoop生态,而是为了更好的拓展大数据生态,两者结合。而Spark由我们Scala开发的,我们... 查看详情