Scala基础语法1

参考的视频教程见:https://www.bilibili.com/video/av33447780?p=34

Scala 和 Java 一样,有7中数值类型Byte、Char、Short、Int、Long、Float 和 Double(无包装类型)和 Boolean、Unit类型。

注意:Unit表示无值,和其他语言中void一样。用作不返回任何结果的方法的结果类型。Unit只有一个是实例值,写成().

Any类为所有类型的祖先,相当于Java类型的object对象。

//变量的定义
//    /**
//     * 可以是var 和val 修饰
//     * var 修饰的可以改,val 不可以,相当于java 中final 修饰的变量
//     *
//     * var |val 变量名称(:类型) = 值
//     *
//     * Unit 数据类型相当于java中void 关键字,但在scala中它的表现形式为()
//     *
//     */

例如:

val a = "laolao"

val a:Int = 2

val s = println("hello")      //s的类型就是Unit,println没有返回值

//字符串的格式化输出

 val name = "lisi"
//    var age = 18
//    //普通输出
//    println("name = "+ name,"age = "+age) //这里加逗号输出会有一对括弧括起来
//    println("name = "+ name + "age =" + age)
//    //文字‘f’插值器允许创建一个格式化的字符串,类似于C语言的printf
//    //使用'f'插值器时,所有变量引用都应该是printf样式格式说明符,如%d %f %c等
//    //这里$name%s打印String变量James 和 $height%2.2f打印浮点值1.90
//    println(f"姓名:$name 年龄:$age")  //println 打印有换行
//    printf("姓名:%s,年龄:%d",name,age)//没有换行
//
//    //‘s’允许在处理字符串时直接使用变量
//    //在println语句中将String变量($name)附加到普通字符串中
//    println (s"name = $name,age = $age")
//    //字符串插入器还可以处理任意表达式
//    //使用‘$’字符串插入器处理具有任意表达式(${1 + 1})的字符串(1+1)的以下代码片段
//    //任何表达式都可以嵌入到${}中
//    println(s"1 + 1 = ${1+1}")
//    val stu = new day01.Student("wang", 18)
//    println(s"name = ${stu.name }")

条件表达式

//条件表达式if else 的用法
//    //有返回值,返回最后一行的代码
//    val i: Int = 12
//    if(i>10) i else 0 //相当于下面
//    val s = if(i > 10)
//            { i
//              100   //返回这个100
//            }
//            else
//              0
//    val r = if(i < 8) i       //else 没有写,编译器会自动推测出你什么都没有返回,就是Unit 类型
//    val r1 = if(r < 8) i else "xx00"  //r1 的类型为Any 类型,因为String为AnyRef类型,而Int为AnyVal 类型
//                                      //AnyRef 和 AnyVal 的父类 为Any 类型

for循环的使用

//for 循环没有返回值,要想有返回值用yield 关键字
val arr = Array(1, 2, 3, 4)
//
//    for(ele <- arr)
//      println(ele)
//    //用下标来遍历
//    val element = Array(0,1,2,3)
//    for(ele <-element)
//      println(arr(ele))
//要是给了一个你不知道多少元素的数组你怎么遍历呢? to 方法(左闭右闭),until 方法(左闭右开)
//    for(ele <- 0 until 4)
//      println(arr(ele))
//    for(ele <- 0 to 3)
//      println(arr(ele))
//    for(ele <- 0 until arr.length)
//      println(arr(ele))
//    //for循环中还可以增加守卫
//    for(ele <- arr; if ele %2 == 0) println(ele)  //还可以吧分号去掉
//    for(ele <- arr if ele % 2 == 0) println(ele)
//    //双层for 循环
//    for(i <- 1 to 3; j <- 1 to 3 if i!=j) println(10 * i + j) //双层for循环中不可以吧中间的分号去掉
//返回值 yield 它会返回一个新的集合
val r1 = for (ele <- arr; if ele % 2 == 0) yield ele
println(r1.length)

运算符/运算符重载

Scala中的+号可不是一个运算符,而是一个方法。

//    Scala 中的+-/*等操作符的作用与Java一样,位操作符也一样,只是有一点特别的,这些操作符实际上是方法
//    a + b是 a.+(b)方法的简写
//    arr map(x => x) 是arr.map(x => x)的简写

方法的定义与调用

/***
 * 定义方法及调用
 * 格式:def methodName([list of parameters]):[return type] = {}
 * 如果不使用等号和方法体,则隐式声明抽象方法
 * def add(a: Int, b: Int):Int = a + b  //:Int 也可以省略不写,编译器自己可以推测
 * add(3,5)
 * 也可以定义不带返回值的方法 : def sayHello = println("hello")
 * 调用: 直接sayHello 不可以sayHello()
 * 也可以这样定义: def sayHello() = println("hello")
 * 调用: sayHello 或者 sayHello()
 */
/***
 * 方法如何转换为函数呢? 如add方法: add _
 * 方法名 + 空格 + 下划线
 * 转化的函数的调用:此时的函数是没有名字的
 */
函数的定义

/***
 * 函数的定义:
 * 定义方式一: val f1 = (x: Int ,y: Int) => x + y
 * 对应的函数签名为:f1: (Int ,Int) => Int = <function2> 2 代表有两个参数
 * 定义方式二: val f2:(Int ,Int) => Int = (x,y) => x + y
 * 对应的函数签名为:f2: (Int ,Int) => Int = <function2>
 * 例如: val ff1 = (name: String) => println(name)
 *       val ff2: (String) =>Unit = a =>println(a)
 * 下面为没有任何参数的函数,函数的返回类型为Int
 * 例:val f3:() => Int = () => 1
 * 签名为: f3: () =>Int = <function0>
 * 在交互式窗口中,比如定义了一个数组,数组下面有很多方法,例如arr.+(不是要加+号)制表符可以查看底下所有方法
 * 要是你想看map方法,arr.map + 制表符
 */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值