180124_scala笔记1

Scala(类java语言,面向对象 且 函数式):
scala-2.11.7.msi(jdk<1.8) jdk1.7.80
scala-2.12.X.msi(jdk>=1.8)


windows上安装scala
我的安装路径:D:\CodeProgram\Scala


环境变量:
SCALA_HOME:D:\CodeProgram\Scala
Path:%SCALA_HOME%\bin;%SCALA_HOME%\jre\bin;(追加)
CLASSPATH:.;%SCALA_HOME%\bin;%SCALA_HOME%\lib\dt.jar;%SCALA_HOME%\lib\tools.jar.;


检验安装:
windows+r --> cmd -->scala
'''
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_80).
Type in expressions to have them evaluated.
Type :help for more information.
'''




scala> println("Hello World!")[正常打印是println]
Hello World!


scala> print("Hello World!")[print没换行]
Hello World!


scala -version [java -version 和java一样查看版本]


echo %path%[cmd查看path,此时path中的相对变量已赋值]
scala> :quit [scala的退出方式]


scala> res3.to[按tab键,会给出提示]
toCharArray   toLowerCase   toString   toUpperCase


scala> res5.[按tab键,会给出提示]
+                 compareTo             equalsIgnoreCase   isInstanceOf         replace        substring
asInstanceOf      compareToIgnoreCase   getBytes           lastIndexOf          replaceAll     toCharArray
charAt            concat                getChars           length               replaceFirst   toLowerCase
codePointAt       contains              indexOf            matches              split          toString
codePointBefore   contentEquals         intern             offsetByCodePoints   startsWith     toUpperCase
codePointCount    endsWith              isEmpty            regionMatches        subSequence    trim


scala> val c=100[首次出现的名称,需要告知是val(value,即值变量,常量的意思)还是var(variable,即变量)]
c: Int = 100[这里的Int类型和java的Int1类型不同,没声明常量c是Int类型,但是scala会类型推断,像python一样]


scala> c=200[已出现过的名称,可以不告知val还是var,然而原本为val的名称,不能再被赋值]
<console>:11: error: reassignment to val[报'对常量改变值'的错误]
       c=200


scala> var c=200[对名称c重新解读]
c: Int = 200


scala> c=300[已出现过的名称,可以不告知val还是var,变量var能再被赋值]
c: Int = 300


scala> c="oop"[已出现过的名称,可以不告知val还是var,变量var能再被赋值,但要符合先前的类型推断,不能改变]
<console>:11: error: type mismatch;[报'类型不匹配'的错误]
 found   : String("oop")
 required: Int
       c="oop"
         ^


scala> var c="oop"[对名称c重新解读]
c: String = oop


scala> var c=100[对名称c重新解读]
c: Int = 100


scala> c:Byte=100[已出现过的名称,若不进行重新解读,类型不能声明]
<console>:1: error: ';' expected but '=' found.
c:Byte=100
      ^


scala> var c:Byte=100[已出现过的名称,进行重新解读,可声明类型,该类型需匹配或继承scala的类型推断]
c: Byte = 100


scala> var c:byte=100[类型不能忽略大小写]
<console>:10: error: not found: type byte
       var c:byte=100


scala> var d:Byte=127
d: Byte = 127


scala> var d:Byte=128[Byte上限127]
<console>:10: error: type mismatch;
 found   : Int(128)
 required: Byte
       var d:Byte=128


scala> var d:Short=32768
<console>:10: error: type mismatch;
 found   : Int(32768)
 required: Short
       var d:Short=32768
                   ^


scala> var d:Short=32767[Short上限32767]
d: Short = 32767


scala> var a,b,c=100[继承python语法,对多个名称赋值,实际汇编运行c=100,b=c,a=b]
a: Int = 100
b: Int = 100
c: Int = 100


scala> var a,b,c=1,2,3[未继承python元组语法,不能这样赋值]
<console>:1: error: ';' expected but ',' found.
var a,b,c=1,2,3


scala> var a:Any=100[Any是任意类型,像vba里的变体类型variant]
a: Any = 100


'''数据类型
Byte->Short->Int->Long->Float->Double
Char
Boolean
'''


scala> 100.toString()[数据类型都能访问方法,调用方法加不加()都行]
res7: String = 100


scala> 100.toString
res8: String = 100


scala> var a:String="100"
a: String = 100


scala> 1 to 10[操作符对两个对象操作完后还是表达式,其实操作符to底层调用的还是to方法]
res15: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)


scala> 1.to(10)[to原本是操作符,在scala中可以重载成方法名称,调用to方法,像vb的for i=1 to 10]
res9: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)


scala> "Hello".intersect("World")[取两字符串的交集字符,组成按调用者的字符排序,组成字符串]
res11: String = lo


scala> 1.+(1)[+号原本是操作符,在scala中可以重载成方法名称]
res14: Int = 2


scala> var x=10
x: Int = 10


scala> x+=1[scala中只有+=,没有++,操作结束没有返回值,只有调用x才返回操作后的值,相当于惰性迭代]


scala> x
res17: Int = 11


scala> var x:BigInt=1234567890[支持大数类型,因为scala原本就是为大数据使用的]
x: BigInt = 1234567890


scala> x*x*x*x
res18: scala.math.BigInt = 2323057227982592441500937982514410000


scala> import scala.math._[_号相当于通配符*号,该包定义了函数,scala.可省略]
import scala.math._


scala> sqrt(2)
res20: Double = 1.4142135623730951


scala> pow(2,5)
res22: Double = 32.0


scala> Pi
res23: Double = 3.141592653589793


scala> min(3,Pi)
res24: Double = 3.0


scala> "Hello".distinct[java中的distinct方法,对字符串中的字符去重]
res25: String = Helo


scala> "Hello"(0)[根据下标取出字符,像python中用[]操作数组,字符串也视作数组]
res27: Char = H


scala> "Hello".apply(0)[上例中下标引用的底层调用的是apply方法,请求返回字符数组的第0个字符]
res28: Char = H


scala> BigInt(123)[根据下标取出BigInt类中的数字123,是scala下math包中的类]
res29: scala.math.BigInt = 123


scala> BigInt.apply(123)[请求取出BigInt类中的数字123]
res31: scala.math.BigInt = 123




Scala不分基本类型和class,都可以直接访问方法


*.scala -->(通过scalac) *.class --> 
scala解释器执行第一个.scala文件


1.词法:
    1.1.标识符
    1.2.换行字符
    1.3.字面值
    1.4.空白与注释
    1.5.XML模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值