我的算法学习之路--01学习scala的第一天

因为我是有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的写法是=>

好了,今天就暂时记录这么多!!!如果喜欢我的文章欢迎关注,我会继续更新我学算法的遇到的技术点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农门卫部的王先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值