Kotlin笔记二(Kotlin基础)

来源:互联网 发布:淘宝网男士加厚衬衣 编辑:程序博客网 时间:2024/06/11 16:07

第一个Kotlin程序,经典的Hello World打印,用一个函数来实现

fun main(args:Array<String>){
println(“Hello Wolrd”)        //可以不用;结尾
}


变量声明

非指定类型

val answer="ok"      val answer=42


指定类型

var answer: Int=1


如果变量没有初始化,则需要显式的指定它的类型

val answer: Int

answer=42


声明变量有俩个关键字val和var,区别如下:

val:不可变引用,使用val声明的变量不能在初始化之后再次复制,相当于Java中的final修饰符

var:可变引用,可以修改变量的值,但是不可以修改变量类型,例如var answer=1,修改为answer="ok",类型不匹配,会报错



类和属性:

我们在Java中定义一个类一般像

public class Person{

private String name;

public Person(String name){

this.name=name;

}

public String getName(){

            return name;

}

}

然后我们把这段代码直接复制到kt文件当中,IDE工具会自动转换为kotlin代码如下:

class Person(val name: String)
很简短的一句话,这种类被称为值对象。把属性写到了类名后面,作用相当于构造器
重新顶一下这个类如:
class Person(
val name: String,  //只读属性
var isOk: Boolean  //可读可写属性
){}
Kotlin中使用:var person=Person("fisher",true)
             println(person.name)   //输出fisher
             println(person.isOk)   //输出Ok
自定义访问器
class Rectangle(val height: Int, var widht: Int){
  var isSquare: Boolean
    get(){
         return height=width;    //重新声明了get属性
     }
}
枚举类:
enum class Color(var r: Int, var g:Int ,var b: Int)//声明了枚举常量的属性,r,g,b值
{
  RRD(255,0,0),BLUE(0,0,255),GREEN(0,255,0);
  fun rgb()=(r*256+g)*256+b
}
获取一个颜色的RGB值:println(Color.BLUE.rgb());
When处理枚举类,下面这段代码是展示了When的应用,对应Java的Switch
fun getColorMean(color: Color)=
   when(color){
     Color.RED -> "红色"
     Color.BLUE-> "蓝色"
     Color.GREEN-> "绿色"
   }
  println(getColorMean(Color.RED))//输出红色
when也可以把多个值合并到一个分支上,值之间用,隔开
转换为
fun getColorMean(color: Color)=
   when(color){
     Color.RED,Color.GREEN -> "原谅色"
     Color.BLUE-> "蓝色"
   }
Kotlin中的when结构比Java中的switch要强大,switch必须使用(枚举常量,字符串或者数字字面值)作为分支条件,
when允许使用任何对象。
fun mixOptimized(c1: Color,c2: Color)=
 when{
  (c1==BLUE && c2==Red)->"黑色"
  (c1==BLUE && c2==GREEN)->"很难看"
}
while循环和do...while循环使用和Java是一样的
for循环:Koltoin使用了区间概念,一个起始值,一个最终值,使用..来表示区间
有一个题目输出1-100内被3整除的数用fizz表示,被5整除的数用buzz表示,3和5的公倍数用fizzbuzz表示
fun fizzBuzz(i: Int)=when{
i%15 == 0 ->"FizzBuzz"
        i%3  == 0 ->"Fizz"
i%5  == 0 ->"Buzz"
}
for(i in 1..100){
   println(fizzBuzz(i))
}
用'in'来检查区间的成员
fun isLetter(c: Char) = c in 'a'..'z'
fun is NotDigit(c: Char) = c !in '0'..'9'
println(isLetter('q'))   输出true
println(isNotDigit('8')) 输出true //注:如果这行输入12会编译错误
in也可以当做when表达式
fun recognize(c: Char) = when (c){
  in '0'..'9'->"It's a digit"
  in 'a'..'z'->"It's a letter"
}
println(recognize('8'))  输出It's a digit


原创粉丝点击