因为我是有java基础的,所以我把算法学习的重点归纳成四个重点
学习一件东西,一定要先从简单的入手。
先从简单的scala语言开始学起
一、配置环境
那么现在开始配置环境变量,首先是jdk,这个我就不阐述了,我直接讲scala的环境配置。
我用的是windows系统,先去官网https://www.scala-lang.org/download/scala2.html到页面末尾下载msi可执行文件。一步步next,这里没什么好说的。
配置环境变量
SCALA_HOME: Scala 的安装目录
Path : %SCALA_HOME%\bin;%SCALA_HOME%\jre\bin;
Classpath :%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.jar;%SCALA_HOME%\lib\tools.jar;
配置好之后在控制台输入scala,如果显示这样就行了
二、文件的编译和运行
回想java的编译和运行
javac HelloWorld.java ::编译java源文件为class字节码文件
java HelloWorld ::运行HelloWorld
scala的编译和运行和java差不多
scalac HelloWorld.scala ::编译scala为class字节码文件
scale HelloWorld ::运行HelloWorld
三、scala里的数据类型
java八大数据类型还记得吗?
数值:short int long double float
字符:String char
布尔:boolean
在scala里面也是这样
数值:Short Int Long Double Float
字符: String Char
布尔:Boolean
里面都是大写首字母的。
四、变量和常量的声明
//变量的声明
var a = 1;//自动匹配类型
var b:Int = 1;//写定类型
//常量的声明
val a = 1;//自动匹配类型
val b:Int = 1;//写定类型
五、lazy关键字
任何变量或常量加上lazy后,值不会立即生效,只有当这个变量第一次使用时,才会生效
这个使用领域主要是在io读取文件时用的
import scala.io.resource._
var file = fromFile("文件路径").mkString
//立即报错
/**
java.io.FileNotFoundException: dsa (系统找不到指定的文件。)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
... 36 elided
*/
lazy var file = fromFile("文件路径").mkString
//不会报错,在使用时才报错
file += "HelloWorld"
六、函数
scala中的函数的写法是
//标准的有返回值函数
def 函数名(a:Int, b:Int):Int = {
a + b
}
//函数只有一行可以省略大括号
def 函数名(a:Int, b:Int):Int = a + b
//def代表这是一个函数,括号里是参数,:Int是返回值可以省略自动识别
//这里的返回值写在最后一行不需要加return,自动识别为返回值
//标准的无返回值函数
def 函数名2(a:Int, b:Int):Unit = {
println(a + b)
}
//:Unit可省略
函数的调用和java大体无区别,但是在调用无参数的函数,也可以这样写
println(函数())
println(函数)
函数参数是可以有默认值的,但java没有
def 函数名(a:Int = 10, b:Int = 20):Int = {
a + b
}
这就意味着你在调用的时候可以不传参数,可以直接使用
函数()
但是记住这里的括号是不可以省略的!!!
另外,针对多个默认值导致的传参匹配不了的问题,他提供了解决方法就是命名参数
就是在调用传参时加入参数名
def 函数名(a:Int = 10, b:Int = 20):Int = {
a + b
}
函数名(a = 10)
函数名(b = 100)
函数名(b = 10,a = 100)
假如参数长度不固定,scala也提供了解决方法
这里用的循环稍后会阐述。
def 函数名(nums:Int*):Int = {
var result:Int = 0
for(num <- nums){
result += num
}
result
}
函数可以转化成一个变量或者常量
方法是方法名加空格 下划线
def function(x :Int) = {
print(x)
}
val functionval = function _
var functionvar = function _
七,idea整合scala
首先你要去下载一个scala的插件,在settings-plugins里面
这个插件要下很久,我挂了梯子还是很慢,网速很慢,你忍一下...
建议到https://plugins.jetbrains.com/plugin/1347-scala/versions下,然后离线导入,但是要注意版本,版本最好低一点,否则会报错。
然后按照这样创建maven项目
注意啊,创建的项目一定要改版本,不然连println()这种方法你都用不了。
然后就在src里面写main函数就可以运行了,下面是main函数的写法
八、分支结构和循环结构
分支结构和java没有区别
val yes = true
if(yes ||( !yes && yes)){
println("Hello if")
}
和java用法完全一样
然后是循环
//for循环
var arr = Array("a","b","c")
for(item <- arr){
println(item)
}
//while循环
var (num,sum) = (100,0)
while(num > 0){
sum += num
num --
}
//这里注意类似java的(num = num - 1) > 0的写法在这里是不允许的
//foreach循环
var arr = Array("a","b","c")
arr.foreach(a => {
println(a)
})
//这里是类似java lamda表达式的写法,这里注意,for循环是<-,而这种类lamda的写法是=>
好了,今天就暂时记录这么多!!!如果喜欢我的文章欢迎关注,我会继续更新我学算法的遇到的技术点。