Scala _02基础
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)}
}
注意点:
- 建议类名首字母大写 ,方法首字母小写,类和方法命名建议符合驼峰命名法。
- scala 中的object是单例对象,相当于java中的工具类,可以看成是定义静态的方法的类。object不可以传参数。另:Trait不可以传参数
- scala中的class类默认可以传参数,默认的传参数就是默认的构造函数。重写构造函数的时候,必须要调用默认的构造函数。
- class 类属性自带getter ,setter方法。
- 使用object时,不用new,使用class时要new ,并且new的时候,class中除了方法不执行,其他都执行。
- 如果在同一个文件中,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,do…while
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基础相关推荐
- Scala的基础语法(超详细版)
Scala的基础语法 文章目录 Scala的基础语法 1.声明值和变量 2.数据类型 3.算术和操作符重载 4.控制结构语句 4.1条件分支语句 4.2循环语句 5.方法与函数 5.1方法 5.2 函 ...
- Spark快速大数据分析——Scala语言基础(壹)
Spark快速大数据分析--Scala语言基础(壹) 文章目录 Spark快速大数据分析--Scala语言基础(壹) 前记 Scala的历史 环境搭建: 1.SBT构建工具和REPL: 2.使用IDE ...
- Scala编程基础——集合高阶函数
Scala编程基础--集合&高阶函数 集合 Scala中集合分为可变集合和不可变集合 可变集合:可以修改.添加.移除一个集合的元素. 不可变集合:安全的并发访问. 不可变集合,相比之下,永远不 ...
- Scala 编程基础 C(函数式编程)
文章目录 1. 函数定义和高阶函数 2. 针对集合的操作 3. 函数式编程实例:WordCount 1. 函数定义和高阶函数 Scala是一门多范式编程语言,混合了面向对象编程和函数式编程的风格.在过 ...
- scala入门基础2
scala基础之二 课程内容: apply方法 单例对象 函数即对象 包 模式匹配 样本类 try-catch-finally apply 方法 当类或对象有一个主要用途的时候,apply方法为你提供 ...
- scala面向对象基础---类继承和特质
一.类继承 传送门:Scala基础-类继承 Scala的类继承 调用超类的构造方法 重写超类的成员 3.1.不被继承的成员 3.2.不可重写的成员 3.3.无参方法与字段 子类型多态与动态绑定 抽象类 ...
- Spark编程基础-(二)Scala语言基础
1. Scala语言概述 1.1 计算机的起源 阿隆佐邱奇设计了演算的系统,形式系统. 阿兰图灵提出图灵机. 冯诺依曼是计算机体系结构的奠基者.1945年提出计算机体系结构. 图1 冯诺依曼体系结构 ...
- Scala学习 -- 基础语法
一.变量 1.三种变量修饰符 val 定义 immutable variable(不修改 常量) var 定义 immutable variable(可修改 变量) lazy val (惰性赋值的 ...
- Spark记录-Scala语法基础
参考:http://docs.scala-lang.org/cheatsheets/index.html.http://docs.scala-lang.org/.http://www.scala-la ...
最新文章
- 【MySQL】MySQL表的增删改查(进阶-下)
- 把一件简单的事情做好你就不简单了
- Uva1600 巡逻机器人
- python3.8.5怎么用-python3.8 五分钟就可以入门
- java engine_java使用OGEngine开发2048
- md5withrsa java_浏览器运行java插件报错:Algorithm constraints check failed: MD5withRSA
- Linux---进程调度相关命令解析
- python 剪切一行内容到另一个文件
- 阿里云携领先SDN能力,亮相全球网络技术盛会ONS
- 我看中国软件---人才篇
- 元件怎么反转_电气图纸怎么看?三分钟教你学会看懂,受用一生
- Python学习笔记之蓝牙模块通讯-Pybluez
- ui设计app设计风格有哪些?ui设计app界面设计流程是什么?
- Dos攻击与DDos攻击
- DGUS组态软件中图标旋转显示如何使用
- VO、DTO、DO、PO
- This application failed to start because it could not find or load the Qt platform plugin “xcb“.
- Python串口异步通信
- 解决excel转pdf出现的折行问题
- 数据分析师要具备什么能力?数据分析师必备的7种能力
热门文章
- POJ - 2065 SETI(高斯消元解方程(取模))
- 洛谷 - P2944 [USACO09MAR]Earthquake Damage 2 G(最小割)
- HDU - 2896 病毒侵袭(AC自动机)
- CodeForces - 739E Gosha is hunting(最大费用最大流+思维建边)
- cmos逻辑门传输延迟时间_CMOS和TTL都有哪些区别?图腾柱电路又是什么,详情进来一瞧!...
- python安装后无法运行任何软件_为啥我按照python安装教程,总说无法启动此程序,因为计算机中丢失?...
- Markdown-基础语法
- [51nod1847][算法马拉松23(飞越愚人节)F]奇怪的数学题
- codeforces contest 1119
- 用Python实现双端队列