Scala基础

1、数据类型

2、变量和常量的声明

  • 定义变量或者常量的时候,也可以写上返回的类型,一般省略,如:val a:Int = 10
  • 常量不可再赋值
package com.henu.scala/*** 定义变量和常量* 变量 :用 var 定义 ,可修改* 常量 :用 val 定义,不可修改*/
object ScalaDemo01 {def main(args: Array[String]): Unit = {val a:Int = 10print(a)var name = "george"println(name)name = "kangkang"val x = 100println(x)
//    x = 200//编译不通过,不能给常数再次赋值}
}

3、类和对象

  • 创建类
package com.henu.scalaclass Person {val name = "george"val age = 22def getName() = {"my name is "  + name}
}
  • 创建对象
package com.henu.scalaobject PersonDemo {def main(args: Array[String]): Unit = {
//    val person = new Person()var person = new Person()println(person)println(person.age)println(person.getName())}
}
  • 对象中的apply方法

object中不可以传参,当创建一个object时,如果传入参数,那么会自动寻找object中的相应参数个数的apply方法。

package com.henu.scala
/*** object单例对象中不可以传参,* 如果在创建object时传入参数,那么会自动根据参数的个数去Object中* 寻找响应的apply方法。*/
object ApplyDemo {def apply(s : String) = {println("name is " + s)}def apply(s : String,age : Int) = {println("name is " + s + ",age is " + age)}def main(args: Array[String]): Unit = {ApplyDemo("george")ApplyDemo("george",22)}
}
  • 伴生类和伴生对象
package com.henu.scala/*** 单例对象与类同名时,这个单例对象被称为这个类的伴生对象,* 而这个类被称为这个单例对象的伴生类。伴生类和伴生对象要在* 同一个源文件中定义,伴生对象和伴生类可以互相访问其私有成员。* 不与伴生类同名的单例对象称为孤立对象。* @param pname* @param page*/
class Person(pname : String , page : Int){var name = Person.namename = "ddd"val age = pagevar gender = "m"def this(name: String,age: Int,g: String){this(name,age)gender = gprintln(name + age + gender)}def getName() = {"my name is "  + name}
}
//public class Main
object Person{val name = "kangkang";//  public static void main(String[] args) {def main(args: Array[String]): Unit = {val person = new Person("george",22,"w");println(person.age)println(person.getName())println(person.gender)}
}

注意点:

  1. 建议类名首字母大写 ,方法首字母小写,类和方法命名建议符合驼峰命名法。
  2. scala 中的object是单例对象,相当于java中的工具类,可以看成是定义静态的方法的类。object不可以传参数。另:Trait不可以传参数
  3. scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。重写构造函数的时候,必须要调用默认的构造函数。
  4. class 类属性自带getter ,setter方法。
  5. 使用object时,不用new,使用class时要new ,并且new的时候,class中除了方法不执行,其他都执行。
  6. 如果在同一个文件中,object对象和class类的名称相同,则这个对象就是这个类的伴生对象,这个类就是这个对象的伴生类。可以互相访问私有变量。
  • if else
package com.henu.scalaobject IfElseDemo {def main(args: Array[String]): Unit = {val age = 22if (age < 22){println("age is not")}else if (age == 22){println("age is right")}else{println("oh no!!!")}}
}
  • for ,while,dowhile

to和until 的用法(不带步长,带步长区别) 

package com.henu.scalaobject ForWhileDoWhileDemo {/*** to和until* 例:* 1 to 10 返回1到10的Range数组,包含10* 1 until 10 返回1到10 Range数组 ,不包含10*/def main(args: Array[String]): Unit = {println(1 to 10)//Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)println(1 to (10))//Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)println(1 to (10,2))//Range(1, 3, 5, 7, 9)println(1.to(10,2))//Range(1, 3, 5, 7, 9)println(1 until 10)//Range(1, 2, 3, 4, 5, 6, 7, 8, 9)println(1 until(10))//Range(1, 2, 3, 4, 5, 6, 7, 8, 9)print(1 until(10,3))//Range(1, 4, 7)}
}

创建for循环

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

创建多层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)//90//例子:打印乘法表for (i <- 1 until 10; j <- 1 until 10){if (i >= j){print(i + "*" + j + "=" + i*j + " ")}if (i == j){println()}}

for循环中可以加条件判断,可以使用分号隔开,也可以不使用分号

for (i <- 1 to 10; if (i%2) == 0;if (i == 4)){println(i)}

scala中不能使用count++,count只能使用count = count+1 ,count += 1

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

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

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

Scala _02基础相关推荐

  1. Scala的基础语法(超详细版)

    Scala的基础语法 文章目录 Scala的基础语法 1.声明值和变量 2.数据类型 3.算术和操作符重载 4.控制结构语句 4.1条件分支语句 4.2循环语句 5.方法与函数 5.1方法 5.2 函 ...

  2. Spark快速大数据分析——Scala语言基础(壹)

    Spark快速大数据分析--Scala语言基础(壹) 文章目录 Spark快速大数据分析--Scala语言基础(壹) 前记 Scala的历史 环境搭建: 1.SBT构建工具和REPL: 2.使用IDE ...

  3. Scala编程基础——集合高阶函数

    Scala编程基础--集合&高阶函数 集合 Scala中集合分为可变集合和不可变集合 可变集合:可以修改.添加.移除一个集合的元素. 不可变集合:安全的并发访问. 不可变集合,相比之下,永远不 ...

  4. Scala 编程基础 C(函数式编程)

    文章目录 1. 函数定义和高阶函数 2. 针对集合的操作 3. 函数式编程实例:WordCount 1. 函数定义和高阶函数 Scala是一门多范式编程语言,混合了面向对象编程和函数式编程的风格.在过 ...

  5. scala入门基础2

    scala基础之二 课程内容: apply方法 单例对象 函数即对象 包 模式匹配 样本类 try-catch-finally apply 方法 当类或对象有一个主要用途的时候,apply方法为你提供 ...

  6. scala面向对象基础---类继承和特质

    一.类继承 传送门:Scala基础-类继承 Scala的类继承 调用超类的构造方法 重写超类的成员 3.1.不被继承的成员 3.2.不可重写的成员 3.3.无参方法与字段 子类型多态与动态绑定 抽象类 ...

  7. Spark编程基础-(二)Scala语言基础

    1. Scala语言概述 1.1 计算机的起源 阿隆佐邱奇设计了演算的系统,形式系统. 阿兰图灵提出图灵机. 冯诺依曼是计算机体系结构的奠基者.1945年提出计算机体系结构. 图1 冯诺依曼体系结构 ...

  8. Scala学习 -- 基础语法

    一.变量 1.三种变量修饰符 val 定义 immutable variable(不修改 常量) var 定义 immutable variable(可修改 变量)   lazy val (惰性赋值的 ...

  9. Spark记录-Scala语法基础

    参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-la ...

最新文章

  1. 【MySQL】MySQL表的增删改查(进阶-下)
  2. 把一件简单的事情做好你就不简单了
  3. Uva1600 巡逻机器人
  4. python3.8.5怎么用-python3.8 五分钟就可以入门
  5. java engine_java使用OGEngine开发2048
  6. md5withrsa java_浏览器运行java插件报错:Algorithm constraints check failed: MD5withRSA
  7. Linux---进程调度相关命令解析
  8. python 剪切一行内容到另一个文件
  9. 阿里云携领先SDN能力,亮相全球网络技术盛会ONS
  10. 我看中国软件---人才篇
  11. 元件怎么反转_电气图纸怎么看?三分钟教你学会看懂,受用一生
  12. Python学习笔记之蓝牙模块通讯-Pybluez
  13. ui设计app设计风格有哪些?ui设计app界面设计流程是什么?
  14. Dos攻击与DDos攻击
  15. DGUS组态软件中图标旋转显示如何使用
  16. VO、DTO、DO、PO
  17. This application failed to start because it could not find or load the Qt platform plugin “xcb“.
  18. Python串口异步通信
  19. 解决excel转pdf出现的折行问题
  20. 数据分析师要具备什么能力?数据分析师必备的7种能力

热门文章

  1. POJ - 2065 SETI(高斯消元解方程(取模))
  2. 洛谷 - P2944 [USACO09MAR]Earthquake Damage 2 G(最小割)
  3. HDU - 2896 病毒侵袭(AC自动机)
  4. CodeForces - 739E Gosha is hunting(最大费用最大流+思维建边)
  5. cmos逻辑门传输延迟时间_CMOS和TTL都有哪些区别?图腾柱电路又是什么,详情进来一瞧!...
  6. python安装后无法运行任何软件_为啥我按照python安装教程,总说无法启动此程序,因为计算机中丢失?...
  7. Markdown-基础语法
  8. [51nod1847][算法马拉松23(飞越愚人节)F]奇怪的数学题
  9. codeforces contest 1119
  10. 用Python实现双端队列