kotlin回顾
回顾下以前我们敲过的案例
fun main(args:Array<String>){ //固定写法,目前先记忆
println("hello kotlin") //println是打印内容到控制台的意思
}
作业: 编写main函数, 在控制台打印 I love kotlin
fun main(args:Array<String>){ //固定写法,目前先记忆
println("I love kotlin") //println是打印内容到控制台的意思
}
用自然语言重读HelloWorld
fun main(args:Array<String>){
println("hello kotlin")
}
计算机给我执行一段任务,
任务的入口是main方法,参数是一个字符串数组类型的
执行的内容是打印hello kotlin到控制台
存储数据
计算机程序是跟数据打交道的,我们编写的绝大多数程序都是在处理或者记忆数据,
下面我们要学习如何声明和记忆数据.
fun main(args:Array<String>){
// 计算机给我一块空间 存储一个值为18的数据 , 这块空间的名字为age
var age =18
println("存储的年龄是="+age)
}
fun main(args:Array<String>){
// 计算机给我一块空间 存储一个值为"小华华"的数据 , 这块空间的名字为name
var name="奥娃"
println("存储的名字是="+name);
}
在kotlin里面如果我们需要存储一个数据,只需要var一下, 给数据起个名字,放进去就行了
变量和容器
变量观念是培养程序设计能力的基础
因为在程序中的数据都必须通过变量来处理
处理不同的数据,必须使用不同的变量类型

平时我们上街的时候,有人总会拎个小包或者手提袋什么的
装上点儿琐碎的东西,回家以后就取出东西来,将袋子扔到一边去
计算机里也得用上这种小包或小袋子
把我们输入的字符串或者数值装起来,要的时候就取出来
逛沃尔玛



逛沃尔玛之前,我们准备了这样几种容器, 鸡蛋盒, 冷藏盒, 木酒盒
如果我们买了鸡蛋,只需要把鸡蛋放入鸡蛋盒,买了肉把肉放进冷藏盒,
买了红酒把红酒放入木酒盒.不同的东西放入不同的盒子里,方便管理.
数据也不易损坏.
同样的,kotlin程序也给我们实现准备好了很多类型的盒子,
用于存放不同类型的数据.
体会代码
fun main(args:Array<String>){
//计算机给我一个盒子,盒子的标签叫name, 里面放入字符串"小华华"
var name="小华华"
//盒子里面不放"小华华"了 放字符串"奥娃"
name="奥娃"
println("名字是:"+name)
}

程序正确执行,最后打印 名字是:奥娃
fun main(args:Array<String>){
//计算机给我一个盒子,盒子的标签叫name, 里面放入字符串"小华华"
var name="小华华"
//盒子里面不放"小华华"了 放字符串"奥娃"
name=18
println("名字是:"+name)
}

大家注意红色错误,第三行代码已经报错.
大家思考一下, 一个放肉的盒子适合放鸡蛋么?

常见容器的类型
Byte 存储值范围 整数-128~127
Short 存储值范围 整数-32768~32767
Int 存储值范围 整数-2147483648~2147483647
Long 存储值范围 整数-9223372036854775807 ~ 9223372036854775807
Float 存储值范围 小数,小数点可以精确到6位
Double 存储值范围 小数,小数点可以精确到15-16位
String 存储值范围 字符串,用"'双引号引起来的字符串都可以存

遇见整数一般Int够用了, 遇见小数高精度选Double,低精度选Float,字符串就用String
类型推断(Type inference)
类型推断是kotlin的一大特色,我们用代码来解释一下
fun main(args:Array<String>){
var name="小华华"//自动推断name的类型是字符串类型
name=18.0//把小数18.0放入name 程序报错
println("名字是:"+name)
}

fun main(args:Array<String>){
var age = 18 //自动推断出age的类型是Int整数
age ="张三" //把字符串放入整数容器,程序报错
println("年龄是:"+age)
}

显式类型声明
fun main(args:Array<String>){
var name
}

上面的代码会报错,原因是我们告知计算机给我一块存储空间,标签叫name,
由于没有指定name里面存放的内容,kotlin无法通过类型推断(Type inference)确定
这块存储空间存放什么类型的数据.代码报错.
我们可以通过显式类型声明来告知计算机这块空间的数据类型是什么
具体写法如下,采用冒号后面跟数据类型
fun main(args:Array<String>){
var name:String
}

name显式声明是字符串类型,存入整型数字13报错

name显式声明是字符串类型,存入字符串"13"不再报错

注意区别
13是整型数字,"13"是字符串, 加上引号就是字符串,不加引号是数字
变量和常量
变量是一个容器,里面存放的是可以改变的数据.
常量是一个容器,里面存放的是不可以改变的数据.

上面的代码我们声明了变量name,存放String类型的数据,
接下来我们在name这个容器里面分三次存放了"小华华","妮妮","奥娃"
这个name就是一个变量
有时候某个容器里的数据要求是固定不变的,我们就可以用常量声明

上面的代码我们定义了PI等于3.1415026,
但是在第4行,我们发现PI还可以修改为1.1
如果一个容器的数据我们希望他是不变的. 可以用val关键字声明

采用val声明的常量不可以被修改.
好啦,今天的车就开到这吧.大家辛苦啦
总结:
- var 声明变量
- val 声明常量
- 不同的数据类型用不同的容器保存
- kotlin会通过类型推断自动推断数据类型
- 我们可以用: 来显式的指定数据类型
网友评论