scala总结

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

var val


2.Scala数据类型有哪些?

Byte,Short,Int,Long,Float,Double,Char,String,Boolean,Unit,Null,Nothing,Any,AnyRef


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

 String 对象是不可变的,如果你需要创建一个可以修改的字符串,可以使用 String Builder 类


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

\


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

if(布尔表达式){
   // 如果布尔表达式为 true 则执行该语句块
}else{
   // 如果布尔表达式为 false 则执行该语句块
}


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

while(condition)
{
   statement(s);
}

在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。
condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。


do {
   statement(s);
} while( condition );


for( var x <- Range ){
   statement(s);
}

以上语法中,Range 可以是一个数字区间表示 i to j ,或者 i until j。左箭头 <- 用于为变量 x 赋值。

for( var x <- List ){
   statement(s);
}

以上语法中, List 变量是一个集合,for 循环会迭代所有集合的元素。

for( var x <- List
      if condition1; if condition2...
   ){
   statement(s);
}

以上是在 for 循环中使用过滤器的语法。

var retVal = for{ var x <- List
     if condition1; if condition2...
}yield x

你可以将 for 循环的返回值作为一个变量存储。

大括号中用于保存变量和条件,retVal 是变量, 循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合。


当在循环中使用 break 语句,在执行到该语句时,就会中断循环并执行循环体之后的代码块。

// 导入以下包
import scala.util.control._
// 创建 Breaks 对象
val loop = new Breaks;
// 在 breakable 中循环
loop.breakable{
    // 循环
    for(...){
       ....
       // 循环中断
       loop.break;
   }
}


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

Scala中的Unit类型类似于java中的void,无返回值。主要的不同是在Scala中可以有一个Unit类型值,也就是(),然而java中是没有void类型的值的。除了这一点,Unit和void是等效的。一般来说每一个返回void的java方法对应一个返回Unit的Scala方法。


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

def functionName  = {
   function body
   return [expr]
}


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

def functionName ([参数列表]) : [return type] = {
   function body
   return [expr]
}


10.什么是闭包?

闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。

var factor = 3  
val multiplier = (i:Int) => i * factor 


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

a.toString a.toDouble


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

不需要


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

var z:Array[String] = new Array[String](3)或var z = new Array[String](3)或val z = Array(1,2,3)

下标从0开始


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

包含


15.Range(1, 10),10包含不包含?for( a <- 1 until 10){ println( "Value of a: " + a );  },10包含不包含?

都不包含


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

object Test {
   def main(args: Array[String]) {
      println(matchTest(3))
   }
   def matchTest(x: Int): String = x match {
      case 1 => "one"
      case 2 => "two"
      case _ => "many"
   }
}


17.异常报错的语法?

import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOException

object Test {
   def main(args: Array[String]) {
      try {
         val f = new FileReader("input.txt")
      } catch {
         case ex: FileNotFoundException => {
            println("Missing file exception")
         }
         case ex: IOException => {
            println("IO Exception")
         }
      } finally {
         println("Exiting finally...")
      }
   }
}


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

Array是定长、ArrayBuffer是变长


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

我们经常引入第三方库,但当我们想要扩展新功能的时候通常是很不方便的,因为我们不能直接修改其代码。scala提供了隐式转换机制和隐式参数帮我们解决诸如这样的问题。

implicit def file2Array(file: File): Array[String] = file.lines

https://www.jianshu.com/p/a344914de895


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

继承:父和子的关系
封装:属性、方法
多态:父类引用指向子类对象 


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

1.类名 - 对于所有的类名的第一个字母要大写吗?

是的 class MyFirstScalaClass

2.方法名称 - 所有的方法名称的第一个字母用小写吗?

是的 def myMethodName()


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

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

new->scala class


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

 import scala.collection.mutable.ArrayBuffer
var c = new ArrayBuffer[Int]();
1. 在尾部添加一个元素
c += 2
2. 在尾部添加多个元素
c += (3,4,5) 
3. 追加集合
c ++= Array(6,7,8,9) 
4. 指定位置添加元素
c.insert(3, 33)  //在下标3之前插入元素  
5. 移除尾部n个元素
c.trimEnd(n)
6. 移除开头n个元素
c.trimStart(n)
7. 移除某个位置的元素
c.remove(3) 
8. 移除从下标为n开始(包括n)的count个元素
c.remove(n, count)
9. ArrayBuffer 转 Array
c.toArray
10. Array 转 ArrayBuffer
c.toBuffer


【来自@若泽大数据】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值