Kotlin 学习笔记(一)基础语法 类 和属性的探索

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27948659/article/details/82190429

前言
本文章只是用于记录学习,所以部分地方如果有错误或者理解不对的地方,麻烦请指正。

工具

  1. android 开发的话 可以使用 android studio ,在新建项目的时候记得勾选 supper kotlin 就可以了,和jni 开发操作相似的。进入android studio之后如果是 3.0 以后的版本,都是自带kotlin 插件的,如果是 as3.0一下的版本则需要在 File /setting / plugins / 搜索 kotlin 安装重启。
  2. 平时跟我一样在学习的话,可以使用idea ,新建kotlin 项目,在里边联系就可以了。

1. HelloWorld

fun main(args: Array<String>) {
    println("Hello world")
    println(max(2,3))
}

fun max(a:Int ,b:Int):Int{
    return if(a>b) a else b;
}

1. main 函数不需要在class 中就可以运行
2. fun 代表一个函数,后边紧跟函数名称,参数列表和返回值类型
3. 参数实现写 参数名称 然后冒号隔开,再写参数类型(和java 相反)
4. 函数的返回值是在后边的(和java刚好相反的)当然 有返回值 也可以不写返回类型(前提是:只有表达式体 函数返回类型可以省略,如果是代码块体函数就必须要 写明函数返回类型),因为kotlin 通过 类型推导 也是可以知道返回值类型的
5. system.out.println 被包装为 println
6. 在行末可以省略 分号 (类似 js)
7. 看到max函数中 if类似于三元表达式 kotlin中,if 是有结果值的表达式
8. 如果返回值 类似于 java 中的 void 则可以写成 :Unit ,当然也可以省略不写

在kotlin 中,除了部分循环(for do 和 do/while)大多控制结构都是表达式,是有返回值的。另一方面 java 中的赋值语句为表达式,而kotlin 中则为语句。
与Java定义包名一样,在源文件的开头定义包名:但是不同的是,包名和文件夹路径可以不一致:源文件可以放在项目的任意位置,当然也不建议这样搞,自己何苦为难自己。。。

2. 变量

考虑到kotlin 的变量声明是可以省略 类型的,所以kotlin 变量声明有别于java ,kotlin 变量声明顺序为 关键字 变量名称 类型(可不加),如果变量没有初始化 则需要明确表明 变量类型。

val name = "ymc"
val age = 23
val age1 : Int = 23

val age2 :Int

age2 = 24

val :不可变引用 ,在val声明变量后不能再初始化之外再次赋值(java final)
var :可变引用 , 该类型变量可以随便赋值
* 官方推荐 尽量使用val 声明变量,使程序更接近函数式编程风格

3 .模版

println("Hello world $name")   // $变量
println("Hello world ${age[0]}")   // ${变量}
println("Hello world " + name)   // 原来的方法也是可以继续使用的

4. 类和属性

4.1 类

接下来 我们比较一下 java 和 kotlin 中类的写法的不同

java

public class DemoBean {

    private final String name;

    public DemoBean(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

kotlin

class DemoBean(val name: String)

如果您跟我一样也是落后的kotlin初学者,我们可以在日常生活中还是以 java 语言开发为主 ,如果需要看kotlin 的效果的时候,我们可以将java 代码复制到 kt文件中,idea会自动提示我们转换。

4.2 属性

类 ,也就是我们将数据和处理数据的代码封装成一个单一的实体。

class Person{
    var name :String  = "ymc"    // 可读可写
    val isMarried : Boolean  = false    // 只读
}

上段代码中 isMarried 会生成一个字段,一个getter 和一个 setter ,而 name 则会生成一个字段 和 一个 getter 。
kotlin 在你声明属性的时候,你就声明了对应的访问器,默认的访问器 就是返回值的 getter 和 更新数值的 setter ,kotlin 会暴漏一个 getName 方法,当然我们也可以自定义访问器。

fun main(args: Array<String>) {
    var person = Person()
    println(person.name +";"+ person.isMarried )

}

可以看到我们直接调用而不需要get,感觉很像js…

4.3 自定义访问器

class Person{
     var name :String  = "ymc"
     var sex : Int = 0;  // 0 为女性 1为男性
     val isMarried : Boolean  = false
     val isBoy :Boolean
            get() {
                return if(sex==1) true else false
            }
}

我们将Person 添加 sex 和 isboy 属性,重写getter ,这样就可以做到自定义访问器。

猜你喜欢

转载自blog.csdn.net/qq_27948659/article/details/82190429