大数据学习06scala的基础语法(代码片段)

燕大扎克伯格 燕大扎克伯格     2023-03-09     165

关键词:

大数据学习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只有一个实例值,写成()
Nullnull,Null类型只有一个实例null
NothingNothing类型在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开发的,我们... 查看详情