一,基本概念:

1,Scala是一种基于JVM的面向对象和函数式编程语言

2,基本类型:数值类型 -》:Byte,Short,Int,Long,Float,Double和布尔类型:Boolean和字符类型:Char

Java基本数据类型总结

小数如何转为十进制

精度转换造成精度损失

question:用BigInt计算2的2017次方(BigInt(2).pow(1024)),scalaApI使用

3,高级for :

for(i <- "abc";j <- 1 to 3 if j==2) yield  (i+j).tochar
/*result cde note:第一个for结束记得用分号;,yield最后获得的结果和第一个生成器类型一致,如“cde” 和“abc”*/

4,参数变长的函数声明:def Demo(args:Int*):Object={}   如果没有返回值的函数程为过程,形式如 def Demo(s:String){}  此时没有等号,也可以显示用Unit=来声明

4.1,默认参数 def Demo(name:String="a",age:Int="4")={}  可以用val b= new Demo()  默认可以无须设置参数   name默认val

4.2 ,函数,过程:过程没有返回值的函数,无需要=号,方法,相当于非静态方法,即对象方法??(不太确定),函数相当于Java中的静态方法(类方法),要加=号。

5,懒值和方法和val区别:

  1,懒值 初始化被推迟,只有第一次调用时才会得到验证

  2,val 申明时就得到验证

  3,def 每次调用时,都需要进行一次验证

例子:

val  file=scala.io.Source.fromFile("/usr/one.txt")
/*result \usr\one.txt (系统找不到指定的路径。)*/
lazy file1 =scala.io.Source.fromFile("/usr/one.txt")
/*result
file: scala.io.BufferedSource = <lazy>
*/
def file2 =scala.io.Source.fromFile("/usr/one.txt")
/*result
//file:scala.io.BufferedSource
file1
file2
//java.io.FileNotFoundException: \usr\one.txt (系统找不到指定的路径。)

6,异常:try{}catch{}finally{}

7,块以最后一个返回,空块返回Unit

8,注意点x=y=4这样不合法的,特例:x:Unit,y:Int,x=y=5

9,var t:Long=1   "String".foreach(t*=_.toLong)

10,练习 递归求字符串的Unicode乘积之和

def product(s:String):Long={
if(s.length==1) s.charAt(0).toLong
else s.take(1).charAt(0).toLong*product(s.drop(1))
} //第10题
def mi(x:Double,n:Int):Double={
if (n==0) 1
else if(n<0)
1/mi(x,-n)
else if(n>0 && n%2==0)
mi(x,n/2)*mi(x,n/2)
else
mi(x,n-1)*x
}

10,sorted(true):升序,sorted(false):为降序(从上往下)

11,多维数组:val arr=Array.ofDim[Double](3,4)

12,课后习题:

//交换数组相邻的元素 3.2
def changeArr(arr:Array[Int]):Array[Int]={
for (i <- 0 until arr.length if( i%2==0)) {
val temp= arr(i)
arr(i)=arr(i+1)
arr(i+1)=temp
}
arr
}
/*异常,会出现数组越界,修改为 for (i <-0 until (arr.length-1,2)*/
val tmp=java.util.TimeZone.getAvailableIDs()
val tmp2=for (i <- tmp if(i.startsWith("America"))) yield { i.drop("America".length)}
scala.util.Sorting.quickSort(tmp2)
/*字符串的操作*、

参考文献:

  1,课后习题答案

Scala快学笔记(一)的更多相关文章

  1. Scala快学笔记(二)

    一,基本概念 1,映射 Map与HashMap与TreeMap,SotredMap等区别: 1.HashMap键无序,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度 ...

  2. Scala快学笔记(三)

    一 ,文件操作: 1,读取行:val source=Source.fromFile("fileName","utf-8)  形成一个字符串:source.mkString ...

  3. [Scala] 快学Scala A3L3

    Actor 通过尽可能避免锁和共享状态,actor使得我们能够容易地设计出正确.没有死锁或争用状况的程序. Scala类库提供了一个actor模型的简单实现.AKKA是更高级的actor类库. 19. ...

  4. [Scala] 快学Scala A2L2

    集合 13.1 集合的三大类 所有的集合都扩展Iterable特质.集合的三大集合为Seq, Set, Map Seq是一个有先后次序的值的序列,比如数组或列表.IndexSeq允许我们通过整型下表快 ...

  5. [Scala] 快学Scala A1L1

    基础 1.1 声明值和变量 在Scala中,鼓励使用val; 不需要给出值或变量的类型,这个信息可以从初始化表达式推断出来.在必要的时候,可以指定类型. 在Scala中,仅当同一行代码中存在多条语句时 ...

  6. 快学Scala习题解答—第一章 基础

    1 简介 近期对Scala比较感兴趣,买了本<快学Scala>,感觉不错.比<Programming Scala:Tackle Multi-Core Complexity on th ...

  7. 《快学Scala》

    Robert Peng's Blog - https://mr-dai.github.io/ <快学Scala>Intro与第1章 - https://mr-dai.github.io/S ...

  8. 快学Scala 第十九课 (trait的abstract override使用)

    trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super ...

  9. 快学Java NIO 续篇

    可以先看Java NIO的整体介绍,这篇接着说以下内容,<快学Java NIO>续篇 FileChannel SocketChannel ServerSocketChannel Java ...

随机推荐

  1. popen && pclose函数

    1. 函数操作: 创建一个管道,调用fork产生一个子进程,关闭管道的不使用端,执行一个shell以运行命令,然后等待命令终止: 2. 函数原型: #include <stdio.h> F ...

  2. STL各个数据结构特点

    STL容器特征总结 2011-11-09 11:10:50|  分类: STL|举报|字号 订阅     STL中顺序容器类和关联式容器类的主要特征如下:(1)Vector 1.内部数据结构:连续存储 ...

  3. Long类型的坑,第一次遇见

    注意下面标红的code,如果不加这段代码会有问题,原因是一个比较的是地址,一个比较的是value,会导致不同,程序逻辑出错!加上后比较的就是值!!! allViewMap.put("proj ...

  4. 回车和换行有什么区别?我们平时按下的Enter键是回车还是换行?

    来源:http://www.52rd.com/blog/Detail_RD.Blog_imjacob_12317.html -------------------------------------- ...

  5. (四)mysql数据类型

    数据类型基本介绍 数值类型 整形类型:tinyint,int,bigint 浮点类型:float,double 字符串类型 char系列:char varchar text系列:text blob系列 ...

  6. python的垃圾回收机制和析构函数__del__

    析构函数__del__定义:在类里定义,如果不定义,Python 会在后台提供默认析构函数. 析构函数__del__调用: A.使用del 显式的调用析构函数删除对象时:del对象名: class F ...

  7. NAT+穿洞基础知识梳理

    参考:https://www.cnblogs.com/shilxfly/p/6589255.html https://blog.csdn.net/phoenix06/article/details/7 ...

  8. django URL参数在view中传递和Template的反向解析方式

    一. URL参数在view中传递 1.带参数名:通过named group方式传递指定参数,语法为: (?P<name>pattern), name 为传递参数的名称,pattern代表所 ...

  9. 洛谷 P1583 魔法照片【二级结构体排序】

    题目描述 一共有n(n≤20000)个人(以1--n编号)向佳佳要照片,而佳佳只能把照片给其中的k个人.佳佳按照与他们的关系好坏的程度给每个人赋予了一个初始权值W[i].然后将初始权值从大到小进行排序 ...

  10. sqlldr Field in data file exceeds maximum length "

    使用sqlldr导数时出现如下错误: " Record 1: Rejected - Error on table PC_PLANNAME, column PLANNAME.Field in ...