Kotlin入门笔记
Hello World
fun main(args:Array<String>):{
println("hello, world!")
}
在java中方法是写在类中的
fun是关键字,main就是方法名,函数的参数就是Array这个参数类型,args就是参数名,{ }这里面就是函数体,在java中只有方法这一说法,但也差不多,别的语言也有函数的说法
函数
fun max(a:Int,b:Int):Int {
return if(a>b) a else b
}
>>>println(max(1,2))
在hello world中有提到函数但没有返回值类型,没有错就是在参数括号:Int这个就是了,总结名字总是在数据类型的前面,上面的if及其内容,它和java中的三元运算符相似,但它是表达式,没看错就是表达式,不是语句
在java中表达式与语句如何区别:表达式由运算符和运算符对象组成,但语句就是最小执行单元,一个语句可以由若干行组成
在kotlin中表达式与语句的区别就是:表达式有返回值,并且能作为另一个表达式的一部分使用
语句:总是包含着它的代码块中的顶层元素,并且没有自己返回值,for,do和do/while以外大多数控制结构都是表达式
在java中赋值语句就是表达式,在kotlin中标成语句
表达式函数体
上面的函数可以变成下面的写法
fun max(a:Int,b:Int):Int=if(a>b) a else b
为什么能那么写就是因为它由单个表达式构成的,可以用这个表达式作为完整的函数体,并且去掉花括号和return语句
如果函数体写在花括号中,称为函数有代码块体,如果直接返回一个表达式,它据说表达式体
还可以等于
fun max(a:Int,b:Int)=if(a>b) a else b
为什么有些函数可以不声明返回类型,作为一门静态类型语言,kotlin不是要求每个表达式都应该在编译期具有类型(通过上面的例子就可以深深感受到它独特的魅力,有种类似于人的语言现场说出来理顺逻辑,像数学那样用公式来表达,这个更感兴趣的是它如何实现的吧,底层)事实上,每个变量和表达式都有类型,即使没有显示地写出来,这种分析通常被称作类型推导
注意:只有表达式体函数的返回类型可以省略,对于有返回值的代码体函数必须显示地写出返回类型和return。。理由这个有助于你理解返回啥,上面那段是理论上可以实际上也可以,但最好不要这样做
变量
静态类型语言的魅力(感觉学完可以对js进一步学习了,以前咋没有呢,可能它被称为前端用的,虽然可以用系列来做全栈,每种语言都有自己的美,特点,优势,缺点就像是美女一般只有深入了解才知道,但要看到内在层次即数据结构和算法,这种感觉也可以帮助我们学习自然语言)
val question=" The Ultimate Question of Life,the Universe,and Everything"
val answer=42
也可以为
val answer:Int=42
和表达式体函数一样,不指定变量类型,编译器会分析初始化器表达式的值,并把它的类型作为标量的类型,在前面例子中,变量的初始化器42的类型是Int,变量就是这个类型
下面变量的类型就是double
val yearsToCompute=7.5e6 ---------7.5*10^6
可变变量和不可变量
val(来自value)—不可变引用,使用val声明不能在初始化后再次赋值,对应于java的final变量
var(来自variable)-----可变引用,和上面相反咯,对应于普通的java变量
默认情况下最好使用val,就像你和老婆说话喜欢用暗示吗
val引用自身是不可变的,但它指向的对象是可变的,就像你回家,家的地址,假设是不变的,但家可以是一层楼或者是n层楼,或者是几个老婆,这个和你家的地址有毛线关系吗
val languages=arrayListOf(“java”)
languages.add(“Kotlin”)