1,函数的声明
//顶层函数,没有写在class中,直接声明在源文件中,默认作用域是public,可写可不写
fun main(args: Array) { }
//可用private修饰
private fun main(args: Array) {}
//函数返回类型,需定义返回类型
fun main(args: Array):Int { return 1 }
//Java和Kotlin类型比较
int char byte -- Java
Int Char Byte -- Kotlin
//如不声明返回类型,默认是返回Unit,相当于Java中返回空,Unit可写可不写,不写默认返回空
fun main(args: Array):Unit { return }
//表达式赋值给函数,可忽略返回值类型
fun max() =1
fun boolean(x :Int,y : Int) =if( x > y){x}else{y}
fun main(args: Array) {
max()
boolean(3,5)
return
}
2,变量的声明
val i="1" //相当于java中的final,不可改变
var j=2 //没有指定变量类型,在编译的时候,由编译器根据赋值给变量的值来推断变量的类型
val z: String ="3" //主动声明变量类型
//Kotlin输出语句
fun variable(args: Array) {
println("i:${i}j:${j}z:${z}")
return
}
3,类的声明
class Person(val name: String){ }
class Student(val name: String ?){ } //?号表示可以传一个null
fun classtext(args: Array) {
val person = Person("方松")
// person.name = "李四" //变量name是val声明的 ,所以无法重新赋值
Student("张三")
Student(null)
return
}
//get、set方法
class Animal(val age: String){
val name:String //val只有get方法,因为不能重新赋值
get() ="cat"
var isMarried: Boolean
get() =true
set(value) {
isMarried= value
}
var isAnimal: Boolean =false
get() =true
set(value) {
field= value //field相当于isAnimal,使用field必须在声明变量时给一个默认值
}
}
//get(),set()方法调用
fun classAnimal(){
val animal = Animal("3")
animal.age//实际是调用Animal类的get()方法
animal.name//调用的实际上是类中get() = "cat"
animal.isMarried=true//调用的实际上是类中set(value) = { isMarried = value }
}
4,枚举
//enum软关键字 只有在class前面一起用才是关键字
val enum=1//只是一个变量名,Java中不能这样用
enum class Color(val r:Int,val g:Int,val b:Int){
RED(255,0,0),
YELLOW(1,2,3),
BLUE(2,3,4);//在枚举中如果要定义函数,必须使用 ;隔开 ,不定义函数可以不用
funrgb() =r+g+b
}
//函数中调用枚举
fun enum(){
Color.RED
Color.BLUE
}
5,控制流
//判断
fun whentext(){
//相当于java中的switch
when(Color.RED){
Color.BLUE->println("蓝色")//->相当于java中的case xxx : break
Color.RED,
Color.YELLOW->println("黄色")
}
when{//不带参数相当于java中的if , else if
1+1==3->println("1")
text() ->println("2")
}
fun max(x :Int,y : Int) =if( x > y){x}else{y}
fun max2(x :Int,y : Int) =when{
x > y -> x
else-> y
}
}
//循环
fun fortext(){
//方法一,11次循环,0-10之间 包含10
for( iin0..10){
}
//方法二
valrange : IntRange =0..10
for( iinrange){
}
//跳出循环方法一
for( jin0..5){
if( j ==2){
break
}
}
//跳出循环方法二
ok@for( zin0..5){
if( z ==2){
break@ok
}
}
}