美文网首页
Scala知识点梳理

Scala知识点梳理

作者: Coderlxl | 来源:发表于2018-03-06 00:58 被阅读0次

    1.Scala怎样声明变量与常量?

    var a =0 //变量

    val b =0 //常量 

    2.Scala数据类型有哪些?

    基本类型:

    Byte, Short,Int,Long,Float,Double,Boolean,Char;它们和java的区别,他们都是类

    var 变量名: 类型 = 值

    例如:var a2: Short =1

    3.String 对象是可变还是不可变?假如要创建一个可以修改的字符串,应该使用哪个类?

    (1)String对象不可变

    (2) StringBuilder可变

    4.转义字符用什么符号?

    \开头,例如:\t,  \n 等

    5.IF...ELSE 语法是什么?

    expr是boolean型表达式

    if (expr) {

    //TODO

    }else {

    //TOD

    }

    6.循环语句哪三种,分别语法是什么?怎样退出循环?

    (1)for, while, do while

    for (i <-1.to(3)) {

    println(i)

    }

    var i =1

    while (i <3) {

    //TODO

      println(i)

    i = i +1

    }

    var j =1

    do {

    //TODO

      println(j)

    j = j +1

    }while (j <1)

    (2)scala中没有break和continue这种语法,需要借助 Breaks对象

    breakable {

    for (i <-1 to5) {

    println(i)

    break

    }

    }

    7.函数中 Unit是什么意思?

    表示空,类似于java中的void,不同的是它的值是()

    8.Scala怎样定义一个不带入参,不返回值的函数

    def test {}

    9.Scala怎样定义一个带入参,返回值的函数

    def test(param: Int): Int = {

    100

    }

    10.什么是闭包?

    闭包是由代码 + 用到的非全局变量组成

    scala> var y=10

    y: Int = 10

    scala> val sum= (x:Int) => x+y

    sum: Int => Int = <function1>

    scala> sum(10)

    res6: Int = 20

    11.val a = 10,怎样将a转为double类型、String类型?

    a.toDouble和a.toString

    例如:

    val a =10

    var b: Double = a.toDouble

    var c:String = a.toString

    12.Scala函数中是把方法体的最后一行作为返回值,需不需要显示调用return?

    不需要

    13.怎样定义一个字符串数组?下标是从1开始的吗

    (1) var array1 =new Array[String](10) 或者 var array2 =Array("a","b")

    (2) 下标从0开始

    14.1 to 10 ==> 1.to(10),10包含不包含?

    包含,to 是 [ ]闭区间,until 是左闭右开[ )

    15.Range(1, 10),10包含不包含?

    不包含,是左闭右开[ )

    补充:下面代码包含不包含10?

    for( a <- 1 until 10){

    println( "Value of a: " + a );

      }

    也不包含10, until也是左闭右开[ )

    16.Scala 模式匹配语法是什么?

    xx match {

    case value  => ...

    例如:

    var name ="lisi"

    namematch {

    case "zhangsan" =>println("zhangsan")

    case "lisi" =>println("lisi")

    case _ =>println("no name match")

    }

    17.异常报错是语法?

    try {

    //TODO

    }catch {

    case e :Exception=> //TODO

    }finally {

    //TODO

    }

    例如:

    try {

    var i =1 /0

    }catch {

    case e1:NumberFormatException =>print(e1)

    case _:Exception =>print("other exception")

    }finally {

    //TODO

    }

    18.Array、ArrayBuffer,谁是定长?谁是变长?

    Array定长, ArrayBuffer变长

    19.什么是隐式转换函数?什么场景下用?怎样定义?

    (1)以implicit关键字声明的带有单个参数的函数

    (2)(需要将值从一种类型转成另外的时候)类型转换

      (3) implicit def intToChar(value: Int) = value.toChar

    //下面代码如果把intToChar函数注释掉,编译会报错

    val max: Char = math.max(1,2)

    print(max)

    补充 什么是 隐式转换 和 显示转换:

    一般情况下,数据的类型的转换通常是由编译系统自动进行的,不需要人工干预,所以被称为隐式类型转换。但如果程序要求一定要将某一类型的数据转换为另外一种类型,则可以利用强制类型转换运算符进行转换,这种强制转换过程称为显式转换。显示类型转换格式为:

    (强制的类型名)表达式

    用于强行将“表达式”的值转换成“类型名”所表示的数据类型。例如,(int)4.2的结果是4;强制类型转换的目的是使表达式的值的数据类型发生改变,从而使不同类型数据之间的运算能够进行下去。

    自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。

    转换规则为:

    从存储范围小的类型到存储范围大的类型。

    具体规则为:

    short(char)→int→long→float→double

    也就是说int类型的变量可以自动转换为long类型,示例代码:

    int b = 10;long l = b;

    20.Scala面向对象,三大特性是什么?什么区别?

    封装:属性、方法

    继承:父和子的关系

    多态:父类引用指向子类对象

    21.Scala 基本语法需要注意点?

    和java一样,用驼峰命名法

    (1)类名 - 对于所有的类名的第一个字母要大写

    (2)方法名称 - 所有的方法名称的第一个字母用小写

    22.对象是什么?类是什么?怎样在IDEA创建文件?

    (1)类:具有相同属性和方法的一组对象的集合,是抽象的描述

    实例:是一个具体的实体

    类是对象的模板,对象是类的实例。

    (2)File -> new

    23.变长数组ArrayBuffer的系列问题

    var c = new ArrayBuffer[Int]();

    1. 在尾部添加一个元素

    c+=1

    2. 在尾部添加多个元素

    c+=(2,3)

    3. 追加集合

    c++=Array(4,5)

    4. 指定位置添加元素

    c.insert(1,9) //1是下标,子啊指定下标前插入

    5. 移除尾部n个元素

    c.trimEnd(3) //移除尾部3个元素

    6. 移除开头n个元素

    c.trimEnd(n)

    7. 移除某个位置的元素

    c.remove(1) 

    8. 移除从下标为n开始(包括n)的count个元素

    c.remove(n, count)

    9. ArrayBuffer 转 Array

    toArray

    10. Array 转 ArrayBuffer

    toBuffer

    相关文章

      网友评论

          本文标题:Scala知识点梳理

          本文链接:https://www.haomeiwen.com/subject/qoykfftx.html