博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Scala篇】--Scala初始与基础
阅读量:5261 次
发布时间:2019-06-14

本文共 3095 字,大约阅读时间需要 10 分钟。

一、前述

Scala是基于JVM的另一个语言。

Scala官网6个特征。

1).Javascala可以混编

2).类型推测(自动推测类型)

3).并发和分布式(Actor

4).特质,特征(类似javainterfaces abstract结合)

5).模式匹配(类似java switch

6).高阶函数

二、Scala基础

 1.数据类型

 

 

 2、变量和常量的声明

 

  • 定义变量或者常量的时候,也可以写上返回的类型,一般省略,如:val a:Int = 10
  • 常量不可再赋值

 

 

/**     * 定义变量和常量     * 变量 :用 var 定义 ,可修改      * 常量 :用 val 定义,不可修改     */    var name = "zhangsan"    println(name)    name ="lisi"    println(name)    val gender = "m"//    gender = "m"//错误,不能给常量再赋值

 3、类和对象

 

 

  • 创建类

 

 

class Person{  val name = "zhangsan"  val age = 18  def sayName() = {    "my name is "+ name  }}

 

 

  • 创建对象
object Lesson_Class {   def main(args: Array[String]): Unit = {    val person = new Person()    println(person.age);    println(person.sayName())  }}

 

  • 伴生类和伴生对象

 

class Person(xname :String , xage :Int){  var name = Person.name  val age = xage  var gender = "m"  def this(name:String,age:Int,g:String){    this(name,age)    gender = g  }    def sayName() = {    "my name is "+ name  }}object Person {  val name = "zhangsanfeng"    def main(args: Array[String]): Unit = {    val person = new Person("wagnwu",10,"f")    println(person.age);    println(person.sayName())    println(person.gender)  }}

 PS:

建议类名首字母大写 ,方法首字母小写,类和方法命名建议符合驼峰命名法。

scala 中的object是单例对象,相当于java中的工具类,可以看成是定义静态的方法的类。object不可以传参数。另:Trait不可以传参数

 scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。

重写构造函数的时候,必须要调用默认的构造函数。

class 类属性自带getter setter方法。

 使用object时,不用new,使用class时要new ,并且new的时候,class中除了方法不执行,其他都执行。

 如果在同一个文件中,object对象和class类的名称相同,则这个对象就是这个类的伴生对象,这个类就是这个对象的伴生类。可以互相访问私有变量。

 

4、for ,while,dowhile的使用

     1、tountil 的用法(不带步长,带步长区别)

/**     * to和until     * 例:     * 1 to 10 返回1到10的Range数组,包含10     * 1 until 10 返回1到10 Range数组 ,不包含10     */        println(1 to 10 )//打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10    println(1.to(10))//与上面等价,打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10        println(1 to (10 ,2))//步长为2,从1开始打印 ,1,3,5,7,9    println(1.to(10, 2))         println(1 until 10 ) //不包含最后一个数,打印 1,2,3,4,5,6,7,8,9    println(1.until(10))//与上面等价    println(1 until (10 ,3 ))//步长为2,从1开始打印,打印1,4,7

  2、 创建for循环

 

/**     * for 循环     *      */    for( i <- 1 to 10 ){      println(i)    }

 

 3、创建多层for循环

 

//可以分号隔开,写入多个list赋值的变量,构成多层for循环    //scala中 不能写count++ count-- 只能写count+    var count = 0;    for(i <- 1 to 10; j <- 1 until 10){      println("i="+ i +",	j="+j)      count += 1    }    println(count);        //例子: 打印小九九    for(i <- 1 until 10 ;j <- 1 until 10){      if(i>=j){    	  print(i +" * " + j + " = "+ i*j+"	")              }      if(i==j ){        println()      }          }

 

 4、for循环中可以加条件判断,分号隔开

 

//可以在for循环中加入条件判断    for(i<- 1 to 10 ;if (i%2) == 0 ;if (i == 4) ){      println(i)}

 

 

5、scala中不能使用count++count只能使用count = count+1 count += 1

6、for循环用yield 关键字返回一个集合。

7、while循环,while(){}do {}while()

 

//将for中的符合条件的元素通过yield关键字返回成一个集合    val list = for(i <- 1 to 10  ; if(i > 5 )) yield i     for( w <- list ){      println(w)}   /**     * while 循环     */    var index = 0     while(index < 100 ){    	println("第"+index+"次while 循环")      index += 1     }    index = 0     do{    	index +=1     	println("第"+index+"次do while 循环")}while(index <100 )

 

转载于:https://www.cnblogs.com/LHWorldBlog/p/8395693.html

你可能感兴趣的文章
poj_2301_Building a Space Station_mst
查看>>
抓取android系统日志_记录一次定位app闪退故障
查看>>
命令查看java的class字节码文件
查看>>
javascript -- 計算頁面多少時間後自動跳轉到指定頁面
查看>>
几个动画demo
查看>>
Win10系统的SurfacePro4的启动菜单太多怎么管理,UEFI的启动菜单如何编辑
查看>>
HUE中Oozie执行Sqoop
查看>>
php 导出
查看>>
[iOS]使用signal让app能够在从容崩溃
查看>>
位运算符的应用
查看>>
quicksort
查看>>
Windows 文件过滤驱动经验总结
查看>>
一个如此简单的杀手级应用
查看>>
捕获异常
查看>>
Ubuntu 14.04 LTS中怎样解决系统设置残缺的问题
查看>>
6.1.2.8 margin
查看>>
百练2775:文件结构“图”
查看>>
在美国地铁里的一个实验:平凡的地方能否感知美 (ZZ)
查看>>
MVC4 Membership, Authorization, and Security
查看>>
利用SharePoint Designer 修改列表页面实例
查看>>