scala基础入门

一、Scala安装

下载网址:Install | The Scala Programming Language

scala基础入门_第1张图片

ideal安装

(1)下载安装Scala plugins

scala基础入门_第2张图片

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

scala基础入门_第3张图片

scala基础入门_第4张图片

scala基础入门_第5张图片

(3)加载Scala

scala基础入门_第6张图片

(4)创建工程吧 ^_^

scala基础入门_第7张图片

scala基础入门_第8张图片

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

scala基础入门_第9张图片

二、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数据类型结构

scala基础入门_第10张图片

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))
    }
(八)元组
        val tp = ( "hello",3.14 , 39 )  //元祖
        println("元组的第一个元素"+tp._1)
        println("元组的第二个元素"+tp._2)
        println("元组的第三个元素"+tp._3)
        println("元组的第四个元素"+tp._4) //定义了三个,第四个报错
(九)可变集合
        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))

你可能感兴趣的:(scala,大数据,开发语言)