scala基础练习,学习scala必备知识点
有⼀句话叫做:先看懂,然后再⼿懂。就是先脑⼦会代码,然后再⼿练熟了代码,这确实是程序员的必备精神之⼀,多学多敲多看。作为⼀个scala初学者,有必要先学习scala的基础
特别注意scala严格遵循⼤⼩写,关键字名不能写错
下⾯就让我们来练习⼀下下,我们可爱的scala的基础吧,
基础学习⼀:
定义数组,追加数组,以及删除添加数组
llection.mutable.ArrayBuffer
object shimmer2 {
def main(args: Array[String]): Unit ={
//添加元素
//定义定长数组:定义长度为8的定长数组,数组中的每个元素都是初始化为0
val  arr1 =new Array[Int](8)
//打印定长数组:内容就是数组的hashcode值
println(arr1)
//定义变长数组(数组需要导⼊包:llection.mutable.ArrayBuffer)
val ab:ArrayBuffer[Int]= ArrayBuffer[Int]()
//向变长数组中追加数组
ab+=1
println(ab)
//向变长数组中追加多个元素
ab+=(2,3,4,5)
println(ab)
/
/把定长数组追加到变长数组中
python获取数组长度
//追加⼀个定长数组
ab++=Array(6,7)
println(ab)
//追加⼀个变长数组(数组缓冲)
ab ++=ArrayBuffer(8,9)
println(ab)
//在变长数组的某个位置插⼊元素
ab.insert(0,-1)
ab.insert(0,0)
println(ab )
/
/在变长数组中删除某个元素
println(ab)
}
}
结果:
基础练习⼆:
数组的遍历:
object ArreyDemo {
def main(args: Array[String]): Unit ={
//定义数组
val array= new Array[Int](8)//⽅式⼀
val myarr=Array(1,9,2.5,6.3,72)//⽅式⼆
//打印输出数组中的所有元素
for(x<-myarr){
println(x+" ")
}
//打印换⾏
println()
/
/计算数组中所有元素的和
var total =0.0;
for(i<- 0 to (myarr.length-1)){
total+=myarr(i)
}
println("总和为:"+total)
//查数组中的最⼤值
//注意:<-中间不要出现空格,像这样会报错:< -
var max= myarr(0)
for(i<- 1 to (myarr.length - 1)){
//如果if语句只有⼀条可以去掉{}
if(myarr(i)>max)
max =myarr(i)
}
println("最⼤值:"+max)
}
}
基础练习三:
数组的转换
object Arrey {
def main(args: Array[String]): Unit ={
//数组转换就是通过yield关键字符原始的数组进⾏转换,会产⽣⼀个新的数组,然⽽原始的数组保持不变。    //scala使⽤var定义变量,val定义常量
// 定义⼀个数组实现将偶数取出乘以10后⽣成⼀个新的数组
val arr =Array(1,2,3,4,5,6,7,8,9)
var newArr=for (e<-arr if e%2==0) yield e*10//20 40 60 80
//如果直接打印会打印出hash值,必须通过toBuffer转换
Buffer)//toBuffer将定长数组变成变长数组,并输出
}
}
代码结果:
基础练习四:
元组:
object shimmer1 {
def main(args: Array[String]): Unit ={
//scala元组是对多个不同类型对象的⼀种简单封装,它将不同的值⽤⼩括号括起来,并⽤逗号做分隔,即表⽰元组    val tuple=("shimmer",1,13)//创建元组,使⽤逗号进⾏分隔
//获取元组中的元素,(tuple._)元组索引从1开始
var newtuple = tuple._1
println(newtuple)
//zip⽅法,拉链⽅法,此拉链⽅法跟Python类似,
// 如果两个数组的长度不⼀致吗,短的那个数组的长度为组合后数组的长度,长的数组多出的数将被舍弃
val scores = Array(80,90,70)
val names= Array("shimmer","admiral","zhuzhu")
println(names.zip(scores).toBuffer)
println(scores.zip(names).toBuffer)
}
}
代码结果:
基础练习五:
集合
⼀:List:
llection.mutable.ListBuffer
object set1 {
def main(args: Array[String]): Unit ={
//scala中集合三⼤类:list,set,以及map
//集合分为可变类型(mutable)和不可变类型(immytable)
//list不可变类型,定义列表需要导⼊包llection.mutable.ListBuffer
//字符串
val fruit:List[String]= List("apples","oranges","pears")
Buffer)
//整型
val nums:List[Int]= List(1,2,3)
Buffer)
//空
val empty:List[Nothing]=List()
Buffer)
//⼆维列表
val dim:List[List[Int]]=
List(
List(1,0,0),
List(0,1,0),
List(0,0,1),
List(1,1,0)
)
Buffer)
//在scala中可以使⽤Nil和“::”操作列表,定义不同类型的集合,"::"定义多⾏时需要空⼀⾏    val fruit1="aplles"::("oranges"::("pears"::Nil))
println(fruit1 )
//整型
val nums1=1::(2::(3::(4::Nil)))
println(nums1)
//空列表
val empty1=Nil
Buffer)
//⼆维列表
val dim1 =(1::(0::(0::Nil)))::(1::(0::(0::Nil))):: (1::(0::(1::Nil)))::Nil
println(dim1)
}
}
代码结果:
object set_apply {
def main(args: Array[String]): Unit ={
val fruit="apple"::("oranges"::("pears"::Nil))
val nums =Nil
println("Head of fruit:"+fruit.head)
println("tail of fruit:"+fruit.tail)
println("Check if fruit is empty:"+fruit.isEmpty)
println("Check if fruit is empty:"+nums.isEmpty)    println("Take of fruit:"+fruit.take(2))
println("Contains of fruit:"+ains("apples")) }
}
代码结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。