Scala
主要是以前学习的时候的记录
张俊杰1994
一个大龄的码农.目前是Java+Python开发,业余时间研究减肥健身养生,后期可能会去做减肥健身博主.
展开
-
scala语言的一些简写 记录,持续更新
.flatMap(x => x.split(" “)) 可以简写成 .flatMap(_.split(” "))原创 2021-06-05 10:47:12 · 243 阅读 · 0 评论 -
IDEA的Scala插件安装
IDEA的Scala插件安装默认情况下IDEA不支持Scala的开发,需要安装Scala插件。插件安装插件离线安装步骤(1)建议将该插件scala-intellij-bin-2017.2.6.zip文件,放到Scala的安装目录E:\02_software\scala-2.11.8下,方便管理。(2)将插件安装到idea(3)先找到安装插件位置file->setting…插件在线安装点击ok->apply ->重启idea即可...原创 2021-01-03 13:14:39 · 331 阅读 · 0 评论 -
Scala概述
Scala概述(一)概述1.什么是ScalaScala 是一门编程语言,你可以理解为Java生了一个儿子,Scala代码各个方面完全碾压Java,不管是从代码的表现力还是代码的精简和写代码的舒服度上,完全是碾压Java的.Scala学好了之后将来能做很多事情,比如说用来开发后台项目,写大数据的程序,甚至可以把Scala当成脚本来用.Scala是全能型的选手.2.Python和Scala比Python是把其它代码粘合起来,Python能做的Scala都能做,Scala运算速度是远远超过Pyth原创 2021-01-03 13:09:18 · 308 阅读 · 0 评论 -
Scala的视图绑定
视图绑定过时了object ViewBound { def main(args: Array[String]): Unit = { val max1 = max(10, 20) val max2 = max("a", "b") println(max1) } def max[T](x: T, y: T)(implicit ev$1: T => Ordered[T]) = { if (x > y) x else y }}/*视图原创 2020-11-17 09:24:29 · 134 阅读 · 0 评论 -
Scala 上下文绑定
用来替换视图绑定的case class People(age: Int, name: String)object People { // implicit val ord: Ordering[People] = new Ordering[People]() { override def compare(x: People, y: People): Int = x.age - y.age }}object ContextBound { def main(args: Arra原创 2020-11-17 09:21:49 · 165 阅读 · 0 评论 -
Scala泛型,以及泛型上下限
概念a: 泛型类定义类的时候, 定义泛型, 这个泛型就可以在类的任何的地方使用当成一个类型来使用b: 泛型方法或者泛型函数定义函数的时候, 定义泛型, 这个泛型只能在函数的内部使用object Generic1 { def main(args: Array[String]): Unit = { val p1 = new Point[Int](10, 20) val x = p1.x val p2 = Point(11.1, 1) val y = p2.y原创 2020-11-17 09:18:45 · 338 阅读 · 0 评论 -
Scala类和类的构造器
创建使用类(1)基本语法[修饰符] class 类名 {类体}说明(1)Scala语法中,类并不声明为public,所有这些类都具有公有可见性(即默认就是public)(2)一个Scala源文件可以包含多个类sadJava和Scala对比java中类: public(文件名和类名一致) 和 默认scala默认的getter和setter不满足标准的javaBean规范getAge() setAge(…)需要注解, 然后scala会自动的生产标准的getter和setter类的属原创 2020-11-16 12:00:48 · 486 阅读 · 0 评论 -
Scala 继承
概念java的继承:类单继承scala的继承:类也是单继承scala没有接口, 但是提供了更加强大的 trail(特质)接口 多实现继承案例继承是extends复写父类的方法是override关键字class A(val a: Int) { def this() { this(10) } println("A 主构造内的代码") def foo() = { println("A foo...") }}class B(val原创 2020-11-16 11:58:08 · 304 阅读 · 0 评论 -
Scala 重写对象的toString方法
class User(val age: Int, val name: String) { override def toString: String = s"[age = $age, name = $name]"}这样在打印对象的时候打印的就不是地址值了.原创 2020-11-16 11:56:18 · 1606 阅读 · 0 评论 -
Scala 匿名内部类
匿名内部类在Scala匿名内部类用的比较少,用匿名函数用的多.object Abs1 { def main(args: Array[String]): Unit = { // 创建一个匿名内部类的对象,在scala中很少使用匿名内部类 val a: A = new A(20) { override var b: Int = 30 override def foo(): Int = { println("abc") 100原创 2020-11-16 11:51:20 · 191 阅读 · 0 评论 -
Scala 抽象类和抽象方法
概念java中有抽象类, scala也有抽象类型scala的抽象类可以有哪些成员:普通类可以有的, 抽象类都可以抽象类可以有抽象方法和抽象字段(属性)抽象类不能直接创建对象, 只能创建他的子类的对案例abstract修饰的类就是抽象类package absobject Abs1 { def main(args: Array[String]): Unit = { val b: A = new B b.foo() }}abstract class A(var原创 2020-11-16 11:49:30 · 516 阅读 · 0 评论 -
scala的权限修饰符
java:publicprotected 同包和子类中使用[default] friendly 同包private 本类scala:[default] 默认都是public,但是Scala没有public关键字protected 只能在子类中使用(同包内不行)privateprivate为私有权限,只在类的内部和伴生对象中可用。protected为受保护权限,Scala中受保护权限比Java中更严格,同类、子类可以访问,同包无法访问。private[包名]增加包访问权限,包..原创 2020-11-16 11:09:15 · 441 阅读 · 0 评论 -
Scala 包的声明和使用
基本语法1)基本语法package 包名2)Scala包的三大作用(和Java一样)(1)区分相同名字的类(2)当类很多时,可以很好的管理类(3)控制访问范围包的声明两种方式:和Java声明方式一样(主流) package com.atguigu.scalal1015.day03.pack包语句(几乎没有)在java中一般一个.java文件只写一个类,但是在scala’中, 一个 .scala文件中一般会写多个类.将来所有的类会默认在一个包中package aa{原创 2020-11-16 11:06:20 · 657 阅读 · 0 评论 -
Scala 的 Workshee
概念Worksheet 是Scala调试的东西,你可以新建一个Scala Worksheet ,文件结尾是.sc结尾的,这样你可以一边写代码一边就进行自动编译. 在写测试的时候用这个很不错.但是仅仅是做代码测试用的,真实项目是不会这么写的.创建方式val a = 10println(a)println("b")class User(val age:Int)val user = new User(10)println(user.age)println(user.age)println(原创 2020-11-16 11:00:23 · 226 阅读 · 0 评论 -
Scala之 函数式编程三 *
高阶函数在Scala里面函数可以定义在任意一个位置,比如说在函数内定义函数.这个在函数内定义的函数就是局部函数一个函数可以返回函数或者是接收函数,那么这个函数就是高阶函数 def main(args: Array[String]): Unit = { //高阶函数————函数作为参数 def calculator(a: Int, b: Int, operater: (Int, Int) => Int): Int = { operater(a, b) }原创 2020-11-03 18:07:57 · 228 阅读 · 0 评论 -
Scala之 函数式编程二*
文字有点多文字有点多,放一起会很卡,所以分开放了.可变参数有参数输出Array类型,如果没有参数就输出List类型的 def test(s: String*): Unit = { println(s) } test() test("params1") test("params1", "params2")输出List()ArraySeq(params1)ArraySeq(params1, params2)如果参数列表中存在多个参数,那原创 2020-11-03 18:07:36 · 308 阅读 · 0 评论 -
Scala之 函数式编程 一 *
概述1)面向对象编程解决问题,分解对象,行为,属性,然后通过对象的关系以及行为的调用来解决问题。对象:用户;行为:登录、连接jdbc、读取数据库属性:用户名、密码Scala语言是一个完全面向对象编程语言。万物皆对象2)函数式编程解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题。例如:请求->用户名、密码->连接jdbc->读取数据库Scala语言是一个完全函数式编程语言。万物皆函数3)在Scala中函数式编程和面向原创 2020-11-03 18:00:23 · 220 阅读 · 0 评论 -
Scala之for循环
for循环本质是一种遍历,遍历集合中的每个元素,当遍历完最后一个元素的时候,自动终止.遍历字符串val a = "abc" // 字符串// 遍历容器. 变量c是常量, 不能修改for (c <- a) { println(c)}结果abc字符相加就变成int类型了 val a = "abc" // 字符串 // 遍历容器. 变量c是常量, 不能修改 for (c <- a) { println(c + 0) //字符相加就变成原创 2020-11-03 11:54:09 · 3014 阅读 · 0 评论 -
Scala之流程控制语句for循环*
for循环本质是一种遍历,遍历集合中的每个元素,当遍历完最后一个元素的时候,自动终止.遍历字符串val a = "abc" // 字符串// 遍历容器. 变量c是常量, 不能修改for (c <- a) { println(c)}结果abc字符相加就变成int类型了 val a = "abc" // 字符串 // 遍历容器. 变量c是常量, 不能修改 for (c <- a) { println(c + 0) //字符相加就变成原创 2020-11-17 11:51:09 · 287 阅读 · 0 评论 -
Scala之流程控制语句 do..while循环控制 *
循环变量初始化;do{ 循环体(语句) 循环变量迭代} while(循环条件) 说明(1)循环条件是返回一个布尔值的表达式(2)do…while循环是先执行,再判断 var i = 0 do { println(i) i += 1 } while (i < 10)...原创 2020-11-02 18:28:29 · 273 阅读 · 0 评论 -
Scala之流程控制语句 While循环控制 *
语法:循环变量初始化while (循环条件) {循环体(语句)循环变量迭代}说明:(1)循环条件是返回一个布尔值的表达式(2)while循环是先判断再执行语句(3)与if语句不同,while语句没有返回值,即整个while语句的结果是Unit类型()(4)因为while中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用变量,而变量需要声明在while循环的外部,那么就等同于循环的内部对外部的变量造成了影响,也就违背了函数式编程的重要思想(输入=>函数=>输出,原创 2020-11-02 18:26:42 · 200 阅读 · 0 评论 -
Scala之流程控制语句if-else *
流程控制总共有三种 顺序流程 分支 循环让程序有选择的的执行,分支控制有三种:单分支、双分支、多分支语法if (条件表达式) {执行代码块}说明:当条件表达式为ture时,就会执行{ }的代码。案例 val a = 10 if (a % 2 == 0) { println(s"$a 是偶数") } val m = 10 val n = 20 var max = m if (m > n) { max =原创 2020-11-02 18:24:48 · 172 阅读 · 0 评论 -
Scala之运算符*
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。一.算术运算符1.基本语法运算符运算范例结果+正号+33-负号b=4; -b-4+加5+510-减6-42*乘3*412/除5/51%取模(取余)7%52+字符串相加“He”+”llo”“Hello”(1)对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。(2)对一个数取模a%b,原创 2020-11-02 18:21:37 · 684 阅读 · 0 评论 -
Scala的数据类型总结*
一.整数类型(Byte、Short、Int、Long)Scala的整数类型就是用于存放整数值的,比如12,30,3456等等。1.整形分类数据类型描述Byte [1]8位有符号补码整数。数值区间为 -128 到 127Short [2]16位有符号补码整数。数值区间为 -32768 到 32767Int [4]32位有符号补码整数。数值区间为 -2147483648 到 2147483647Long [8]64位有符号补码整数。数值区间为 -9223372原创 2020-11-02 12:53:48 · 766 阅读 · 0 评论 -
Scala的数值类型间转换*
1.数值类型转换自动转换(提升)当Scala程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数值类型,这个就是自动类型转换(隐式转换)。数据类型按精度(容量)大小排序为:基本说明(1)自动提升原则:有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度大的那种数据类型,然后再进行计算。(2)当我们把精度大的数值类型赋值给精度小的数值类型时,就会报错,反之就会进行自动类型转换。(3)(byte,short)和char之间不会相互自动转换。(4)byte,short,char他们三者原创 2020-11-02 12:15:57 · 821 阅读 · 1 评论 -
Scala数据类型关系*
所有的数据都是对象!!! 甚至包括函数也是对象.对象也分三六九种.Scala所有的对象都继承自Any,这个Any比Java的Object还要高级.Object只是引用类型,但是Any又表示基本数据类型又表示引用数据类型.Any有两个儿子,一个是AnyVal(值类型),一种是AnyRef(引用类型), AnyVal对应Java的基本类型的包装类.但是和Java比的话,多了两个类型 Unit(类型)和StringOps.Unit(类型), 对应着java中的void, 只有一个值就是: () 圆括号,原创 2020-11-02 11:49:30 · 409 阅读 · 0 评论 -
Scala声明对象*
case class User(var age: Int, var name: String)object Helloworld { def main(args: Array[String]): Unit = { val a = User(1, "李四") a.name = "zs" println(a.name) }}原创 2020-11-02 11:49:07 · 277 阅读 · 0 评论 -
Scala 键盘输入*
在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。基本语法StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()Demodef main(args: Array[String]): Unit = { // 1 输入姓名 println("input name:") var name = StdIn.readLine() // 2 输入年龄 println("input age:")原创 2020-11-01 18:05:32 · 1610 阅读 · 0 评论 -
Scala 字符串输出*
基本语法(1)字符串,通过+号连接(2)printf用法:字符串,通过%传值。(3)字符串,通过$引用demo字符串,通过+号连接 var name: String = "jinlian" var age: Int = 18 println(name + " " + age)output:jinlian 18通过%传值和%d。用的不太多 var name: String = "jinlian" var age: Int = 18 pr原创 2020-11-01 17:59:30 · 646 阅读 · 0 评论 -
Scala 声明变量和常量*
基本语法var | val 变量名 [: 变量类型] = 变量值var 是变量 ,val是常量说明:在Scala中声明一个变量时,可以不指定类型,编译器根据值确定demo(1)声明变量时,类型可以省略(编译器自动推导,即类型推导)(2)类型确定后,就不能修改,说明Scala是强数据类型语言。(3)变量声明时,需要初始值object TestVar { def main(args: Array[String]): Unit = { //(1)声明变量时,类型可以省略原创 2020-11-01 17:42:21 · 1021 阅读 · 0 评论 -
Scala之Maven方式创建Scala项目并且运行HelloWorld
安装Scala插件创建Maven工程直接下一步,不用骨架根据自己情况随便写,写完点击下一步加载ScalaSDK 创建并运行Helloworld程序原创 2020-11-01 17:29:09 · 682 阅读 · 1 评论