• scala基础入门


    一、Scala安装

    下载网址:Install | The Scala Programming Language

    ideal安装

    (1)下载安装Scala plugins

    (2)统一JDK环境,统一为8

    (3)加载Scala

    (4)创建工程吧 ^_^

    (5)windows+Q,查看是否有Scala

    二、Scala常规知识点

    (一)Scala初体验
    1. object ScalaTest {
    2. def main(args: Array[String]): Unit = {
    3. println("hello scala!")
    4. }
    5. }
    6. //hello scala!
    (二)var 变量、val 常量、Type关键字
    1. // var 变量
    2. var name :String="lisi"
    3. println("hi " + name) //hi lisi
    4. name = "xioaming"
    5. println("hi " + name) //hi xioaming
    6. // val 常量
    7. val pai = 3.1415926
    8. var r =10
    9. println("圆的面积:" + pai*r*r) //圆的面积:314.15926
    10. // type关键字:给别名
    11. type T=String
    12. val name:T="java"
    13. println( name ) //java
    (三)Scala数据类型结构

    Any:所有类型的超类(顶级类型)

    AnyVal:表示值类型的超类

    AnyRef:表示引用类型的超类,对应java.lang.Object

    Unit:表示无值,类似于Java中的void

    Nothing:所有类型的子类

    Null:表示null或空引用

    scala与java有着相同的原始数据类型(Byte,Short,Int,Long,Float,Double,Char,Boolend,String)

    (四)字符串插值器

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

    (2)F插值器

    (3)raw插值器

    (4)拓展:Scala中值是多少取决于最后一个数据

    1. //(1)s插值器:允许将变量引用、表达式直接插入字面字符中
    2. var name = "huahua"
    3. println(s"hello $name") //hello huahua
    4. //(2)f插值器:允许将变量引用、表达式直接插入字面字符中
    5. var pai=3.1415926
    6. /* 10个空格 保留小数点两位
    7. | | */
    8. println(f"派的值为:$pai%10.2f") //派的值为: 3.14
    9. //(3)raw插值器
    10. println(s"\n b") // b 换行
    11. println(raw"\n b") //\n b 不转义
    12. //(4)拓展:Scala中值是多少取决于最后一个数据
    13. var name = {
    14. "唐僧"
    15. println("请输出名字:") //请输出名字:
    16. "李白一日游"
    17. }
    18. println(name) //李白一日游
    (五)Scala条件控制
    (1)if

    语法结构:if (  ){  }  else if (  ){  } else {  }

    1. val age = 18
    2. if(age > 18){
    3. println("成年人")
    4. }else if (age == 18){
    5. println("18一枝花")
    6. }else{
    7. println("受未成年人保护法保护")
    8. }
    9. //18一枝花

    提升版

    1. var age = {
    2. println("我是一个代码块,最后一个指令代表返回值")
    3. 99
    4. 11
    5. 33
    6. }
    7. println(s"调用代码块值:$age") //调用代码块值:33
    8. var resoultAge=if(age > 33) age -1 else if (age < 18 ) age +1 else age
    9. println(resoultAge) //33
    (2)while

    语法结构:while(){  }

    1. var num = 5
    2. while ( num <10 ){
    3. println(num)
    4. num = num+1
    5. }
    6. // 5
    7. // 6
    8. // 7
    9. // 8
    10. // 9
    (3) do while 

    语法结构:do {  } whiel (  )

    1. var num = 5
    2. do{
    3. println(num)
    4. num=num+1
    5. }while(num<10)
    6. /* 5
    7. 6
    8. 7
    9. 8
    10. 9*/
    (4)for

    语法结构( ){  }

    1. var num = 4
    2. for( i<-1 to num){
    3. println(i)
    4. }
    5. /* 1
    6. 2
    7. 3
    8. 4*/

     拓展:步长

    1. var num = 5
    2. // 步长为2
    3. for( i<-1 to num by 2){
    4. println(i)
    5. }
    6. /* 1
    7. 3
    8. 5*/
    9. // 步长为5
    10. for( i<-1 to num by 5){
    11. println(i)
    12. }
    13. /*1*/
    (5)小试牛刀
    Ⅰ、打印正三角形
    1. var num = 10
    2. for(i<-1 to num){
    3. for (j<-1 to i){
    4. print("*")
    5. }
    6. println()
    7. }
    8. *
    9. **
    10. ***
    11. ****
    12. *****
    13. ******
    14. *******
    15. ********
    16. *********
    17. **********
    Ⅱ、打印等边三角形
    1. var num = 10
    2. for(i<-1 to num){
    3. for (j<-1 to num-i){
    4. print(" ")
    5. }
    6. for (j<-1 to 2*i-1){
    7. print("*")
    8. }
    9. println()
    10. }
    11. *
    12. ***
    13. *****
    14. *******
    15. *********
    16. ***********
    17. *************
    18. ***************
    19. *****************
    20. *******************
    Ⅲ、打印倒三角形
    1. var num = 10
    2. for(i<-1 to num){
    3. for (j<-1 to num-i){
    4. print("*")
    5. }
    6. println()
    7. }
    8. *********
    9. ********
    10. *******
    11. ******
    12. *****
    13. ****
    14. ***
    15. **
    16. *
    17. var num = 10
    18. for(i<-1 to num){
    19. for (j<-1 to i){
    20. print(" ")
    21. }
    22. for (j<-1 to num-i){
    23. print("*")
    24. }
    25. println()
    26. }
    27. *********
    28. ********
    29. *******
    30. ******
    31. *****
    32. ****
    33. ***
    34. **
    35. *
    Ⅳ、打印倒等边三角形
    1. var num = 10
    2. for(i<-1 to num){
    3. for (j<-1 to i){
    4. print(" ")
    5. }
    6. for (j<-1 to 2*(num-i)-1){
    7. print("*")
    8. }
    9. println()
    10. }
    11. *****************
    12. ***************
    13. *************
    14. ***********
    15. *********
    16. *******
    17. *****
    18. ***
    19. *
    Ⅴ、三角形抠边
    1. var num = 10
    2. for(i<-1 to num){
    3. for (j<-1 to num-i){
    4. print(" ")
    5. }
    6. for (j<-1 to 2*i-1){
    7. if (i == 1 || i == num || j == 1 || j == 2*i-1){
    8. print("*")
    9. }else{
    10. print(" ")
    11. }
    12. }
    13. println()
    14. }
    15. *
    16. * *
    17. * *
    18. * *
    19. * *
    20. * *
    21. * *
    22. * *
    23. * *
    24. *******************

    (6)拓展:break

    1. import scala.util.control._
    2. var num = 10
    3. val breakA = new Breaks
    4. breakA.breakable{
    5. for (i <-1 to 10 by 2){
    6. if (i>5){
    7. breakA
    8. }
    9. println (i)
    10. }
    11. }
    12. /* 1
    13. 3
    14. 5
    15. 7
    16. 9*/
    17. import scala.util.control.Breaks._
    18. var num = 20
    19. for(i<-1 to num by 2){
    20. if (i>5){
    21. break()
    22. }
    23. println(i)
    24. }
    25. /* Exception in thread "main" scala.util.control.BreakControl
    26. 1
    27. 3
    28. 5*/
     (六)迭代器
    1. // yield:表示当for循环之后将所有值返回给result
    2. var num = 12
    3. for (i <-1 to num ;if i%2==0;if i>5 ;if i%3 == 0){
    4. println(i)
    5. }
    6. /* 6
    7. 12*/
    8. var result = for ( i <-1 to num ; if i%2==0;if i>5 ;if i%3 == 0 ) yield i
    9. val it : Iterator[Int]= result.iterator
    10. while (it.hasNext){
    11. println("迭代器:"+ it.next()) //6,12
    12. }
    13. /* 迭代器:6
    14. 迭代器:12*/
    15. /// 【增强for循环-----不推荐使用】
    16. for (re<- result){
    17. println("for循环取值:"+ re)
    18. /* for循环取值:6
    19. for循环取值:12*/
    20. }
    21. println(result)
    22. println(result(0))
    23. println(result(1))
    24. /* Vector(6, 12)
    25. 6
    26. 12*/
    (七)数组
    1. // 创建数组的方式一
    2. var arr = new Array[String](3)
    3. arr(0)="华为met 50"
    4. arr(1)="华为met 60"
    5. arr(2)="华为met 70"
    6. for(i<-0 until arr.length){
    7. println(arr(i))
    8. }
    9. // 创建数组的方式二 调用,伴生对象
    10. var arr=Array("华为met50","华为met60","华为met70")
    11. for (i<-0 until arr.length){
    12. println(arr(i))
    13. }
    14. // 创建数组的方式3 区间数组
    15. val arr : Array[Int]=Array.range(1,10)
    16. val arr : Array[Int]=Array.range(1,10,2)
    17. println("length"+arr.length)
    18. for(i <-0 to arr.length-1){
    19. println(arr(i))
    20. }
    (八)元组
    1. 1)定义了三个元组,第四个报错
    2. val tp = ( "hello",3.14 , 39 )
    3. println("元组的第一个元素"+tp._1)
    4. println("元组的第二个元素"+tp._2)
    5. println("元组的第三个元素"+tp._3)
    6. println("元组的第四个元素"+tp._4)
    7. 2)输出:scala
    8. val tp2=("A",2,'a',4,"scala",6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)
    9. println(tp2._5)
    10. 3)最多22个,超过22个报错
    11. val tp2=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)
    12. //Error:(253, 17) too many elements for tuple: 25, allowed: 22
    13. // val tp2=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)
    14. 4)定义三种类型元组
    15. println(new Tuple3[Boolean,Double,Int](true,3.24,100))
    16. //(true,3.24,100)
    17. 5)遍历元组
    18. val tp4=("A",2,'a',4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)
    19. 【方式一】
    20. val iterator : Iterator[Any] = tp4.productIterator
    21. for (elem<-iterator){
    22. println(elem)
    23. }
    24. 【方式二】
    25. tp4.productIterator.foreach(x=>println(x))
    (九)可变集合
    1. val list1 = scala.collection.immutable.List(1,3,6)
    2. list1.foreach(println)
    3. // lamda函数
    4. list1.foreach( x =>println(x))
    5. val ints = List(1,2,4)
    6. println(ints.getClass)
    7. val builder: StringBuilder= ints.addString(new StringBuilder("1234"))
    8. println("------------------------------")
    9. val int2:List[Int]=ints.drop(1)
    10. int2.foreach(println(_))
    11. println("------------------------------")
    12. ints.foreach(println(_))
    13. println("------------------------------")
    (十)不可变集合
    1. val list = scala.collection.mutable.ListBuffer(1,3,6)
    2. println(list(2))

  • 相关阅读:
    包裹DNA和光敏剂Ce6的白蛋白纳米粒/棉酚白蛋白纳米粒/拉帕替尼白蛋白纳米粒
    【Transform3D】转换详解(看完就会)
    java计算机毕业设计高校就业服务网站源码+mysql数据库+系统+lw文档+部署
    控制原理 | PID控制的三个参数如何影响控制效果?(附参数整定方法)
    mysql双主双从读写分离
    Windows中的Hook机制
    go语言rpc初体验
    网络安全(黑客)自学
    【217】#!/usr/bin/env 的意义
    Windows11 安全中心页面不可用问题(无法打开病毒和威胁防护)解决方案汇总(图文介绍版)
  • 原文地址:https://blog.csdn.net/berbai/article/details/133315140