9月1日
函数式编程
scala的特性
scala的自适应静态类型
scala的简洁性
建文件
9月15日
9月22日
当反编译的文件不在桌面时,反编译时要先切换路径
10月8日
1、if else 不能直接在 scala 环境中使用,因为其包含有多行结束符
若想直接使用,需要
:paste
if(true)
println("i am false")
else
println("i am true")
然后ctrl + D 跳出 if else判断
】
2、scala标识符、关键字、注释
标识符不能以数字开头;不能是scala的关键字;$不建议开头
3.分号
Java中有效行;分隔,强制性
Scala中不具有强制性 ;可有可没有,表示的含义不一样,没有的话默认添加
x=4 y=2
z=x z=x- z=(x
-y y -y)
4.类的定义 类的实例化 类方法的调用
(1)
Class Person{
Def sayHello(){println(“hello scala”)}
}
New Person()
sayHello()
(2)
Class Person{
Def sayHello(){println(“hello scala”)}
}
New Person().
sayHello()
(3)
Class Person{
Def sayHello(){println(“hello scala”)}
}
New Person()
.sayHello()
5、变量
Val(value):声明不可变变量,只可访问,不可修改,若想修改重新赋值
var:声明可变变量,可以访问,可以修改,若想修改直接修改
Val a=10
Var b:String=100
Val s=”hello”
S=”nihao”
Var age=10;
Sge=20
10月13日
一、
(1)val
(2)var
二、
第二章
1.数值类型
10月27日
1. .toBinaryString转二进制
2.短整型最大32767
11月3日
11月10日
1、浮点数的精确度:
(1)BigDecimal:先引入类;再利用类完成判断对比
(2) 用户自定义精度
a=0.3 b=0.1+0.2
方法的定义:def compare(x:Double,y:Double,p:Double)={if((x-y).abs<p) true else false}
方法的调用:compare(a,b,0.0000001)
作业:
利用BigDecimal判断a b是否相等,a为10.1 b为5+5.1
利用用户自定义形式:自定义变量c为10.1 d为5+5.1,完成精度为0.00009精度内的判断,判断是否相等
2、大数的计算
(1)查看类型的最大值.MaxValue(Int.MaxValue查看整型的最大值)
(2)BigInt(放置长整型都接收不了的数据) BigDecimal
作业:
查看整数类型最大值 长整型最大值 完成变量a的定义,要求变量a的值为5555555555555566666
利用BigDecimal完成计算12.1*2,最终得到结果要求是24
3、随机数
r=scala.util.Random完成对象的定义
r.setSeed创建随机种子:1个随机种子 随机产生数据1 5 6
2个随机种子(copy) 随机产生数据相同1 5 6
r.nextInt随机生成整数 r.nextFloat随机生成浮点数。。。
作业:请你生成两个随机种子a b,利用随机种子完成随机数的生成:1000以内的随机整数2个,任意的浮点数2个
4、第二章结束
a'+7+"hello"值是多少 “hello”+“a”+7 值是多少
7&9 和 7|9的求解原理
使用输入值2.7255生成字符串“you own $2.73”可以利用字符串插值实现吗?如果能怎么实现?
将数据120转换为Char String Double 然后再转换成Int
统计字符串“hello,scala,hello,word“中每个单词的个数
5、类和对象(没讲,稍微看了看)
scala中常见的内控结构:顺序结构、分支结构、循环结构
顺序结构:程序自上而下执行
声明变量a 变量b 并分别为变量a b赋值为"scala",10,接下来程序输出执行println()语句,可以看到程序自上而下执行
分支结构:if else语句 ;if else if else语句
判断年龄是否小于100岁,如果小于那么young 否则old
循环结构:while循环 ;do while循环;for循环
(1)while循环:满足条件,一直循环,不满足条件立马终止
(2)do while循环:不管满不满足条件 ,都先循环一次
(3)for循环,限制次数 进行遍历的循环
11月17日
1、类和对象
scala中常见的内控结构:顺序结构、分支结构、循环结构
(1) 顺序结构:程序自上而下执行
声明变量a 变量b 并分别为变量a b赋值为"scala",10,接下来程序输出执行println()语句,可以看到程序自上而下执行
请你声明无参数的main()方法,当调用该方法时,能实现以上两条println的输出
(2)分支结构:if else语句 ;if else if else if else if else语句
判断年龄是否小于100岁,如果小于那么young 否则old
作业:自拟题目
声明变量,当变量大于0时为正数 当变量为0是输出结果为0,当变量小于0时 负数
java和scala的不同,if分支在java中不能存储 但是在scala中能够返回一个值
(3)循环结构:while循环 ;do while循环;for循环
(1)while循环:满足条件,一直循环,不满足条件立马终止
(2)do while循环:不管满不满足条件 ,都先循环一次
(3)for循环,限制次数 进行遍历的循环
请你利用while 或者do while循环实现功能:三个题目
for循环——卫语句
for (var x<-List
if 条件1;if 条件2)
names=List()
for (name<-names if startWith('x'))
println(name)
位语句的返回值yield 在yield后边可以为其声明最终的返回数据是什么 eg. yield fruit.toUpperCase
#类的定义:
普通类
匿名类
内部类
抽象类
#无参数类的定义
class Person(){
}
#有参数类的定义
class Person( ){
}
类的成员:
类:人 类 class Person{}
1、对象:小明 你 new Person()
2、属性:身高 年龄 体重 发色 val age=20
3、方法:说话方式 行为习惯 def speak { 语调 ; 语气;。。。 }
4、构造器:构造出来这个对象
主构造器:整个类的定义主体成为主构造器
辅助构造器:使用this进行定义的返回结果为unit这种称为辅助构造器
class Counter{
private var value=0
private var name=""
private var step=1
println("the main construct")
def this(name:String){
this()
this.name=name
printf("the first auxiliary construct,name:%s\n",name)
def this(name:String,step:Int){
this(name)
this.step=step
printf("the second auxiliary construct,name:%s,step:%d\n",name,step)
}
def increment(step:Int):Unit = {value+=step}
def current():Int={value}
}
val c1=new Counter
val c2=new Counter("the 2nd Counter") #the first auxiliary construct,name:the 2nd Counter
val c3=new Counter("the 3nd Counter",2)
11月24日
一、scala类的成员的访问和修改
二、scala成员访问的本质--get和set
类的定义和访问
阻止get和set方法
成功set
不成功set
有参类
sum无返回值
主构造器和辅助构造器案例一
主构造器和辅助构造器案例二
主构造器和辅助构造器案例三
11月29日
一、类
1.简单类的定义
2.
3.简化代码
去掉结果类型再去掉等号要加上花括号
12月8日
1. 在scala中,方法名和字段名可以重名
2.单例对象
12月15日
(6)模式匹配
(7)scala的自适应类型——nothing
定义一个方法,对两个整数相除,如果除数为0,则抛出“can not divide by zero”异常
12月18日
1.函数的定义
2.函数练习
3.类和函数一块出现的