下载网址:Install | The Scala Programming Language

ideal安装








- object ScalaTest {
- def main(args: Array[String]): Unit = {
- println("hello scala!")
- }
- }
- //hello scala!
- // 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

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) //李白一日游
-
语法结构: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
语法结构:while(){ }
- var num = 5
- while ( num <10 ){
- println(num)
- num = num+1
- }
- // 5
- // 6
- // 7
- // 8
- // 9
语法结构:do { } whiel ( )
- var num = 5
- do{
- println(num)
- num=num+1
- }while(num<10)
- /* 5
- 6
- 7
- 8
- 9*/
语法结构( ){ }
- 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*/
- 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))