大数据学习06 Scala的基础语法

Posted 燕大扎克伯格

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据学习06 Scala的基础语法相关的知识,希望对你有一定的参考价值。

大数据学习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的基础语法

以上是关于大数据学习06 Scala的基础语法的主要内容,如果未能解决你的问题,请参考以下文章

2021年大数据常用语言Scala:基础语法学习 声明变量

2021年大数据常用语言Scala:基础语法学习 循环

2021年大数据常用语言Scala:基础语法学习 字符串

2021年大数据常用语言Scala(十三):基础语法学习 函数 重点掌握

2021年大数据常用语言Scala:基础语法学习 数据类型与操作符

2021年大数据常用语言Scala:基础语法学习 条件表达式