Scala learning (a) acquaintance

I. Introduction

Second, the definition of data types and variable

  2.1 common data types

  2.2 scala variable definitions

Third, the output string format

Fourth, conditional and looping

  4.1 conditional expression,

  4.2 Loops

  4.3 yield keyword

V. operator and operator overloading

 

 

 

text

I. Introduction

  Scala is a multi-paradigm programming language that was originally designed to integrate object oriented programming, and a variety of special functional programming resistance .  Scala run line in  Java flat station (  Java Virtual proposed machine ), and concurrently receiving current has a  Java process sequence .

Second, the definition of data types and variable

  2.1 common data types

  Scala and Java, there are seven types of numeric types Byte, Char, Short, Int, Long, Float and Double (without packaging type) and Boolean, Unit type.

  As shown below:

  2.2 scala variable definitions

   As shown in the following code:

object 变量定义 extends App {

    /**
    *定义变量使用 var 或者 val 关键字
    *语法:
    *var|val 变量名称 (: 数据类型) = 变量值
    */

    //使用 val 修饰的变量, 值不能为修改, 相当于 java 中 final 修饰的变量 
    val name = "小牛人"

    //使用 var 修饰的变量, 值可以修改
    var age = 18

    //定义变量时, 可以指定数据类型, 也可以不指定, 不指定时编译器会自动推测变量    的数据类型 
    val nickName: String = "牛牛"

}

三,字符串格式输出

  下面示例展现了scala的格式输出:

/**

*Scala 中的格式化输出

*/

object ScalaPrint extends App{

  val name = "小牛学堂"
  
  val pirce    = 998.88d

  val url    = "www.edu360.com"

  //普通输出

  println("name=" + name, "pirce=" + pirce, "url=" + url)

  //文字'f'插值器允许创建一个格式化的字符串,类似于 C 语言中的 printf。

  //在使用'f'插值器时,所有变量引用都应该是 printf 样式格式说明符,如%d,%i,%f 等。
  
  //这里$name%s 打印 String 变量 James 和$height%2.2f 打印浮点值 1.90。

  println(f"$name%s 学费 $pirce%1.2f, 网址是$url")    // 该行输出有换行

  printf("%s 学费 %1.2f, 网址是%s", name, pirce, url)    // 该行输出没有换行

  //'s'允许在处理字符串时直接使用变量。

  //在 println 语句中将 String 变量($name)附加到普通字符串中。 println(s"name=$name, pirce=$pirce, url=$url")

  //字符串插入器还可以处理任意表达式。

  //使用's'字符串插入器处理具有任意表达式(${1 + 1})的字符串(1 + 1)的以下代码片段。任何表达式都可以嵌入到${}中。

  println(s"1 + 1 = ${1 + 1}") // output: 1 + 1 = 2

}

四,条件和循环

  4.1 条件表达式

/**

*Scala if 条件表达式

*/

object ScalaIf extends App{

    //if 语句的使用

    val faceValue: Int = 99
    
    val res1 = if(faceValue > 90 ) "帅的不要不要的" else "瘪犊子玩意儿" println(res1)
    
    //8 > 8 不成立, 且代码没有 else 分支, res2 是什么呢 val i = 8
    
    val res2 = if (i > 8) i println(res2)
    
    val res3 = if (i > 8) i else "前面是整型这里是字符串, 那个 res3 是个啥?" println(res3)
    
    //if ... else if ... else 代码较多时可以使用代码块{} val score = 76
    
    val res4 = {
    
    if(score > 60 && score < 70) "及格"
    
    else if(score >=70 && score < 80) "良好" else "优秀"
    
    }
}

  4.2 循环语句

  在 scala 中有 for 循环和 while 循环,用 for 循环比较多 for 循环语法结构:for (i <- 表达式/数组/集合)

/**

*Scala for 循环

*/

object ScalaFor extends App {

    //定义个数组, 元素为 1 到 6
    
    val array = Array(1, 2, 3, 4, 5, 6)
    
    //遍历打印数组中的每个元素
    
    for(ele <- array) { // 类似 Java 中的增强 for
        println(ele)
    }
    
    //通过角标获取数组中的元素
    
    //定义一个 0 到 5 的角标范围
    
    for(i <- 0 to 5) { // 0 to 5 => 会生成一个范围集合 Range(0,1,2,3,4,5)
        println(array(i))
    }
    
    for(i <- 0 until 6) { // 0 until 6 => 会生成一个范围集合 Range(0,1,2,3,4,5)
        println(array(i))
    }
    
    //to 和 until 的区别就是 to 包含为前后都为闭区间, until 为前闭后开区间
    
    //打印数组中的偶数元素
    
    for(e <- array if e % 2 == 0) { // for 表达式中可以增加守卫 println(e)}
    
    //观察下面代码输出结果
    
    for(i <- 1 to 3; j <- 1 to 3 if i != j) { println((10 * i + j) + " ")}
    
    for(e <- array if e % 2 == 0) yeild e
    
}

  4.3 yield关键字

  将一个循环循环出来的值存在一个数组中,并返回。

  如下所示:

for(e <- array if e % 2 == 0) yeild e

五,运算符和运算符的重载

  Scala 中的+ - * / %等操作符的作用与 Java 一样,位操作符 & | ^ >> <<也一样。只是有一点特别的:这些操作符实际上是方法。例如:

a + b
是如下方法调用的简写:
a.+(b)
a 方法 b 可以写成 a.方法(b)

 

Guess you like

Origin www.cnblogs.com/tashanzhishi/p/10948343.html