Scala入门:基础语法介绍(条件语句、循环语句、数组)

变量与常量

1、变量
var 变量名称:类型=xxx var:variable
一般不指定类型,scala编译器会自动识别生成

var name:String ="zhangsan"
var name1="lisi"
name1="wangwu"

变量中,变量名可以重新赋值
2、常量
val 常量名称:类型=xxx val:value

val b=10

此时如果重新定义b=2,会报错
3、使用类型别名定义变量
type关键字
type 类型别名=类型

type T=String
var name:T="sam"

Scala数据结构层次

Scala与java有着相同的原始数据类型
数据类型:Byte/Shor/Int/Long/Float/Double/Char/Boolean/String
Scala中的数据类型和Java中的一样,只是首字母大写。
在这里插入图片描述
Any:所有类型的超类(顶级类型)
AnyVal:表示值类型的超类
AnyRef:表示引用类型的超类,对应java.lang.Object
UnIt:表示无值,类似于Java中的void
Nothing:所有类型的子类
Null:表示null或空引用,有一个示例null
在这里插入图片描述

字符串插值

s插值器:允许将变量引用、表达式直接插入字面字符中

val name="sam"
println(s"hello,$name")

用“$”引用我们定义的常量
在这里插入图片描述
除了引用常量外,我们还可以通过其进行运算

println(s"1+1=${1+1}")

在这里插入图片描述
f插值器:相当于是格式化输出

var num=521.1314
println(f"$name%s,$num%2.3f")

在这里插入图片描述

$name%s表示调用name变量;
2.3f:2是指num总共有多少位,这里num总共有8位,所以当定义为2时对整体位数没有影响。3表示的是小数点后保留3位(四舍五入)。如果2.3改成9.3,那么就超过了num的位数,会自动在前面补上一位空格符
在这里插入图片描述
raw插值器:输出原始数据

println("a\nb")
println(raw"a\nb")

在这里插入图片描述

那么我们如何实现在一条语句中,同时输出原始语句,在该使用换行符等符号时也让其起作用呢?

println(raw"a\nb"+"\nc\nd")

我们可以使用加号进行连接
在这里插入图片描述

Scala条件语句

if语句
Scala中的if语句用法和java基本相同
我们在idea上进行演示。定义一个main方法:

def main(args: Array[String]): Unit = {
   val x=10
    if(x>0) {
      println("x大于10")
    }else if (x == 10) {
      println("x等于10")
    } else{
      println("x小于10")
    }
  }

条件语句返回值
Scala任何表达式都有返回值
例如

var x=10
var y=if(x==10) x+1 else x

条件语句的返回值赋值给y
在这里插入图片描述
代码块“{…}”也是表达式,返回值为最后一个表达式结果
例如

def main(args: Array[String]): Unit = {
  val x=10
    val y={
    x+1;
    println("Hello Scala")
    }
    println(y)
  }

此时输出结果为
x+1的结果并不会输出。()表示的是y:Unit=(),因为返回值是返回最后一个表达式的结果,而println(“我是代码块”)是一个字符串,所以返回结果为unit。
在这里插入图片描述

Scala循环控制

While循环

 var num=10
    while (num<20) {
      println(num)
      num=num+1
    }

while循环的语句同Java
在这里插入图片描述
当然我们也可以使用do{}while()的形式

var num = 10
    do {
    println(num)
    num = num + 1
  }while(num<20)

在这里插入图片描述

for循环

Scala中的for循环和Java相比还是有所区别的:

val num=10
    for(i <- 1 to num) {
      println(i)
    }

1 to 10 表示从i的值从1取到10。
在这里插入图片描述

val num=10
    for(i <- 1 until  num) {
      println(i)
    }

这两个代码的区别是 取值区间不同,until表示从1取到num的前一个数。区间是左闭右开
在这里插入图片描述
for循环中加入步长

def main(args: Array[String]): Unit = {
    val num=10
    for(i <- 1 to  num by 2) {
      println(i)
    }
  }

在1到10 的范围内取值,间隔为2,即步长为2
在这里插入图片描述

当我们进行循环的时候,有时候并不想取尽所有的值,此时我们就需要适时的中断这一循环,就像Jva中的break。
Scala中同样提供了Break的方法。
在调用Break方法前,我们需要先导入Break方法

import scala.util.control.Breaks._ 
object Demon4 {
  def main(args: Array[String]): Unit = {
  val num=10
    breakable(  for(i <- 1 to  num) {
      if(i>6){
        break
      }else{
        println(i)
      }
    })
  }
}

在这里插入图片描述
注意,我们在调用break时候要把语句写在**breakable()**里面,否则就会包异常:
在这里插入图片描述

for循环过滤

var num=10
    for (i <-1 to num;if i%2==0;if i>6) {
      println(i)
    }

循环过滤的条件之间用分号分开,满足过滤条件的值输出
在这里插入图片描述
for循环返回值(for推导式)

var num=10
    val result=for (i <-1 to num;if i%2==0;if i>6) yield i;
    for(a <- result) {
      println(a)
    }

for循环中的yield会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。
把result结果赋给a返回
在这里插入图片描述
下面我们在举一些例题来巩固下循环。
1、用循环打印出九九乘法表

 def main(args: Array[String]): Unit = {
    var num=9
    for(i <- 1 to num) {
      for(j <- 1 to i) {
        print(i+"*"+j+"="+(i*j)+" ")
      }
      println()
    }
  }

在这里插入图片描述
2、打印直角三角形

def main(args: Array[String]): Unit = {
    var num=6
    for(i <- 1 to num) {
      for(j <- 1 to i) {
        print("*")
      }
      println("")
    }
  }

在这里插入图片描述
3、打印等腰三角形

def main(args: Array[String]): Unit = {
    var num=6
    for(i <- 1 to num) {
      for(j <- 1 to num-i) {
        print(" ")
      }
      for (k <- 1 to 2 * i - 1){
        print("*")
      }
        println("")
    }
  }

在这里插入图片描述
4、打印镂空的等腰三角形

def main(args: Array[String]): Unit = {
    var num=6
    for(i <- 1 to num) {
      for(j <- 1 to num-i) {
        print(" ")
      }
      for (k <- 1 to 2 * i - 1){
        if(k==1 || k==2*i-1 || i==num){
          print("*")
        }else{
          print(" ")
        }
      }
        println("")
    }
  }

在这里插入图片描述

Scala数组

Scala数组的索引从0开始。
数组创建方式一
首先定义数组的元素类型和大小

var arr1:Array[String]=new Array[String](3)

再往里插入值

arr1(0)="sam"
arr1(1)="sally"
arr1(2)="mary"

在这里插入图片描述
修改数组元素:

arr1(2)="john"

在这里插入图片描述
数组创建方式二
我们可以直接给定义的数组赋与元素

var arr2=Array("Jason","Marie","Jimmy")

在这里插入图片描述
我们可以查看下arr2的类型

arr2.getClass.getName

自动识别为String类型
在这里插入图片描述
数组的创建方式三

var arr3=Array.range(1,10,2)

这种创建方式利用了range范围函数,从1到10,步长为2
在这里插入图片描述
针对数组的用法,大家可以参考下这篇博文来进一步学习数组的应用
Scala之Array的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值