scala基础入门

一、Scala安装

下载网址:Install | The Scala Programming Language

ideal安装

(1)下载安装Scala plugins

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

(3)加载Scala

(4)创建工程吧 ^_^

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

二、Scala常规知识点

(一)Scala初体验
object ScalaTest {
  def main(args: Array[String]): Unit = {
    println("hello scala!")
  }
}
//hello scala!
(二)var 变量、val 常量、Type关键字
//    var 变量
    var name :String="lisi"
    println("hi " + name)              //hi lisi
    name = "xioaming"
    println("hi " + name)              //hi xioaming
//    val 常量
    val pai = 3.1415926
    var r =10
    println("圆的面积:" + pai*r*r)     //圆的面积:314.15926
//    type关键字:给别名
    type T=String
    val name:T="java"
    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)s插值器:允许将变量引用、表达式直接插入字面字符中
    var name = "huahua"
    println(s"hello $name")            //hello huahua
    //(2)f插值器:允许将变量引用、表达式直接插入字面字符中
    var pai=3.1415926
 /*                   10个空格 保留小数点两位
                            |  |                 */
    println(f"派的值为:$pai%10.2f")   //派的值为:      3.14
    //(3)raw插值器
    println(s"\n b")                   // b     换行
    println(raw"\n b")                 //\n b   不转义
    //(4)拓展:Scala中值是多少取决于最后一个数据
    var name = {
      "唐僧"
      println("请输出名字:")           //请输出名字:
      "李白一日游"
    }
    println(name)                     //李白一日游

(五)Scala条件控制
(1)if

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

    val age = 18
    if(age > 18){
      println("成年人")
    }else if (age == 18){
      println("18一枝花")
    }else{
      println("受未成年人保护法保护") 
    }

//18一枝花

提升版

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

语法结构:while(){  }

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

语法结构:do {  } whiel (  )

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

语法结构( ){  }

    var num = 4
    for( i<-1 to num){
      println(i)
    }
/*  1
    2
    3
    4*/

 拓展:步长

    var num = 5
//    步长为2
    for( i<-1 to num by 2){
      println(i)
    }
/*  1
    3
    5*/
//    步长为5
    for( i<-1 to num by 5){
      println(i)
    }
/*1*/
(5)小试牛刀
Ⅰ、打印正三角形
    var num = 10
    for(i<-1 to num){
      for (j<-1 to i){
        print("*")
      }
      println()
    }


*
**
***
****
*****
******
*******
********
*********
**********
Ⅱ、打印等边三角形
    var num = 10
    for(i<-1 to num){
      for (j<-1 to num-i){
        print(" ")
      }
      for (j<-1 to 2*i-1){
        print("*")
      }
      println()
    }


         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
*******************
Ⅲ、打印倒三角形
    var num = 10
    for(i<-1 to num){
      for (j<-1 to num-i){
        print("*")
      }
      println()
    }
*********
********
*******
******
*****
****
***
**
*

   
 var num = 10
    for(i<-1 to num){
      for (j<-1 to i){
        print(" ")
      }
      for (j<-1 to num-i){
        print("*")
      }
      println()
    }


 *********
  ********
   *******
    ******
     *****
      ****
       ***
        **
         *
Ⅳ、打印倒等边三角形
    var num = 10
    for(i<-1 to num){
      for (j<-1 to i){
        print(" ")
      }
      for (j<-1 to 2*(num-i)-1){
        print("*")
      }
      println()
    }

 *****************
  ***************
   *************
    ***********
     *********
      *******
       *****
        ***
         *
Ⅴ、三角形抠边
    var num = 10
    for(i<-1 to num){
      for (j<-1 to num-i){
        print(" ")
      }
      for (j<-1 to 2*i-1){
        if (i == 1 || i == num || j == 1 || j == 2*i-1){
          print("*")
        }else{
          print(" ")
        }
      }
      println()
    }


         *
        * *
       *   *
      *     *
     *       *
    *         *
   *           *
  *             *
 *               *
*******************

(6)拓展:break

    import scala.util.control._
    var num = 10
    val breakA = new Breaks
    breakA.breakable{
      for (i <-1 to 10 by 2){
        if (i>5){
          breakA
        }
        println (i)
      }
    }

/*  1
    3
    5
    7
    9*/

    import scala.util.control.Breaks._
    var num = 20
    for(i<-1 to num by 2){
      if (i>5){
        break()
      }
      println(i)
    }

/*  Exception in thread "main" scala.util.control.BreakControl
    1
    3
    5*/
 (六)迭代器
//    yield:表示当for循环之后将所有值返回给result
    var num = 12
    for (i <-1 to num ;if i%2==0;if i>5 ;if i%3 == 0){
      println(i)
    }
/*  6
    12*/
    var result = for ( i <-1 to num ; if i%2==0;if i>5 ;if i%3 == 0 ) yield i
    val it : Iterator[Int]= result.iterator
    while (it.hasNext){
      println("迭代器:"+ it.next()) //6,12
    }
/*  迭代器:6
    迭代器:12*/
///   【增强for循环-----不推荐使用】
    for (re<- result){
      println("for循环取值:"+ re)
/*    for循环取值:6
      for循环取值:12*/
    }
    println(result)
    println(result(0))
    println(result(1))
/*  Vector(6, 12)
    6
    12*/
(七)数组
//    创建数组的方式一    
    var arr = new Array[String](3)
    arr(0)="华为met 50"
    arr(1)="华为met 60"
    arr(2)="华为met 70"
    for(i<-0 until arr.length){
      println(arr(i))
    }
//    创建数组的方式二  调用,伴生对象
    var arr=Array("华为met50","华为met60","华为met70")
    for (i<-0 until arr.length){
      println(arr(i))
    }
//    创建数组的方式3  区间数组
    val arr : Array[Int]=Array.range(1,10)
    val arr : Array[Int]=Array.range(1,10,2)
    println("length"+arr.length)
    for(i <-0 to arr.length-1){
      println(arr(i))
    }
(八)元组
        (1)定义了三个元组,第四个报错        
        val tp = ( "hello",3.14 , 39 )  
        println("元组的第一个元素"+tp._1)
        println("元组的第二个元素"+tp._2)
        println("元组的第三个元素"+tp._3)
        println("元组的第四个元素"+tp._4)
 
        (2)输出:scala
        val tp2=("A",2,'a',4,"scala",6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)
        println(tp2._5)

        (3)最多22个,超过22个报错
        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)
        //Error:(253, 17) too many elements for tuple: 25, allowed: 22
        // 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)

        (4)定义三种类型元组
        println(new Tuple3[Boolean,Double,Int](true,3.24,100))
        //(true,3.24,100)

        (5)遍历元组
        val tp4=("A",2,'a',4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)
        【方式一】
        val iterator : Iterator[Any] = tp4.productIterator
        for (elem<-iterator){
          println(elem)
        }
       【方式二】
        tp4.productIterator.foreach(x=>println(x))
(九)可变集合
        val list1 = scala.collection.immutable.List(1,3,6)
        list1.foreach(println)
//        lamda函数
        list1.foreach( x =>println(x))
        val ints = List(1,2,4)
        println(ints.getClass)
        val builder: StringBuilder= ints.addString(new StringBuilder("1234"))
        println("------------------------------")
        val int2:List[Int]=ints.drop(1)
        int2.foreach(println(_))
        println("------------------------------")
        ints.foreach(println(_))
        println("------------------------------")
(十)不可变集合
        val list = scala.collection.mutable.ListBuffer(1,3,6)
        println(list(2))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值