笔记:kotlin学习第一天

  1. kotlin - HelloWorld
fun main(args: Array<String>) {
    println("hello world")
}
  1. kotlin - 基本数据类型:var 定义变量
fun main(args: Array<String>) {
    //定义Boolean类型变量
    var b:Boolean = false
    var byte:Byte = 10
    var int:Int =  20
    var long:Long = 40
    var char:Char = 'a'
    var double:Double = 1.1234567
    var float:Float = 1.1234567f
    var short:Short = 10

    println(b)
} 
  1. kotlin - 与Java数据类型的对比:hashCode()
fun main(args: Array<String>) {
    var a:Int = 10
    //基本数据类型
    var b:Int = a+10
    //调用hashcode
    val hashCode:Int = a.hashCode()

    println(hashCode)
}
  1. kotlin - 基本数据类型的取值范围:MAX_VALUE MIN_VALUE
fun main(args: Array<String>) {
    //Short类型取值范围
    var maxShort:Short = Short.MAX_VALUE
    var minShort:Short = Short.MIN_VALUE
  
    var maxByte:Byte = Byte.MAX_VALUE
    var minByte:Byte = Byte.MIN_VALUE

   var maxInt:Int = Int.MAX_VALUE
    var minInt:Int = Int.MIN_VALUE

    var maxLong:Long = Long.MAX_VALUE
    var minLong:Long = Long.MIN_VALUE

    var maxFloat:Float = Float.MAX_VALUE
    var minFloat:Float = -Float.MAX_VALUE//最小值
  
       var maxDouble:Double = Double.MAX_VALUE
    var minDouble:Double = -Double.MAX_VALUE//最小值
}
  1. kotlin - 调用Java:BigDecimal类调用
fun main(args: Array<String>) {
    //1.123456789123456789
    //存钱
    var money:Double = 1.123456789123456789
    //取钱
    println(money)


    //银行存钱
    var bigDe:BigDecimal = BigDecimal("1.123456789123456789")//省略new关键字
    //取钱
    println(bigDe)

}
  1. kotlin - 智能类型推断和类型转换:var b = 10
fun main(args: Array<String>) {
    var a: Int = 10

    /*---------------------------- kotlin智能类型推断 ----------------------------*/
    //类型安全的语言:类型一但确定,不再改变了
    //kotlin编译器推断出Int类型
    var b = 10

//    var g
//    var c:Byte = 10
    var e = 10L//long

//    b = 20
//    b = "a"

    var c = "张三"
    var d = 'a'

    /*---------------------------- 类型转换 ----------------------------*/
    // 10   "10"
/*---------------------------- String和int类型转换 ----------------------------*/
    //to转换基本数据类型
    var m = 10
    var s = "10"
    println(s.toInt())
    s.toByte()
    /*---------------------------- int类型和long类型转换 ----------------------------*/
    //不同的数据类型不能相互赋值
    //kotlin数据类型可以通过to方法进行相互转换
    var u = 10
    var v = 10L
    v = u.toLong()//Int赋值给Long类型
    u = v.toInt()//Long赋值给Int类型

    //kotlin                    java                    js
    //最严格的类型检查        只能小的赋值给大的     最宽松
}
  1. kotlin - 可变变量和不可变变量:var val
/**
 * 项目开发中尽量使用val  实在不能使用val再使用var
 */
//可以通过反射修改里面的值
const val b:Int = 20
fun main(args: Array<String>) {
    //可变变量
    var a:Int = 10
    a = 20
    //不可变变量
    val d = 20
   

//    b = 30
}
  1. kotlin - 字符串:“广东省” “““广东省””” .trimIndent()
/**
 * 广东省
 * 深圳市
 * 宝安区
 */
//模板性
fun main(args: Array<String>) {
    /*---------------------------- 普通字符串 ----------------------------*/
//    val place1 = "广东省深圳市宝安区"
////    println(place1)
//    //换行
//    val place2 = "广东省\n深圳市\n宝安区"
////    println(place2)
//    val place3 = "广东省" +
//            "深圳市" +
//            "宝安区"
////    println(place3)
//    //怎样写怎样输出?
    /*---------------------------- 原样输出字符串 ----------------------------*/
    val place4 = """
        广东省
        深圳市
        宝安区
    """.trimIndent()

    println(place4)
}
  1. kotlin - 字符串删除空格:trim()、trimMargin()
fun main(args: Array<String>) {
    /*---------------------------- 普通字符串删除空格 ----------------------------*/
    val str = "  张三   "
    val newStr = str.trim()
//    println(newStr)
    /*---------------------------- 原样输出字符串 ----------------------------*/
    val str2 = """
        /张三
        /李四
        /王五
    """.trimMargin("/")
    println(str2)
}
  1. kotlin - 字符串的比较:== 、 equals 、 ===

    fun main(args: Array<String>) {
        val str1 = "abc"
        val str2 = String(charArrayOf('a','b','c'))
        //equals  比较值  true
        println(str1.equals(str2))
        //== 比较的也是值
        println(str1 == str2)
    
        //=== 比较地址值 false
        println(str1 === str2)
    }
    
  2. kotlin - 字符串切割:split(a,b) 多条件切割

    fun main(args: Array<String>) {
        val str = "张三.李四-王五"
        //多条件切割
        val result = str.split(".","-")
        println(result)
    }
    
  3. kotlin - 字符串截取:substring() 以及重载方法

    fun main(args: Array<String>) {
        val path = "/Users/yole/kotlin-book/chapter.adoc"
        //获取前6个字符
    //    println(path.substring(0, 6))
        println(path.substring(0..5))//0到5
        //把第一个r之前的字符截取
        println(path.substringBefore("r"))
        //把最后一个r之前的字符截取
        println(path.substringBeforeLast("r"))
        //把第一个r之后的字符截取
        println(path.substringAfter("r"))
        //把最后一个r之后的字符截取
        println(path.substringAfterLast("r"))
    }
    
  4. kotlin - 二元元组:pair 、 triple

    fun main(args: Array<String>) {
        //定义二元元组 姓名  年纪
    //    val pair = Pair<String,Int>("张三",20)
        val pair = "张三" to 20
    //    println(pair.first)
    //    println(pair.second)
    
        //三元元组
        val triple = Triple<String,Int,String>("李四",20,"15456678")
        println(triple.first)
        println(triple.second)
        println(triple.third)
    
    //    1/0
    }
    
  5. kotlin - 空值处理:?. ? !! ?:

    /**
     * val str:String 非空类型 不能赋值为null
     * val str: String? 可空类型 可以赋值为null
     *
     * 空安全调用符:?.
     * 空值处理的运算符
     * 可空类型  Int?
     * 关闭空检查  a!!
     * 空安全调用符 a?.toInt
     * Elvis操作符  ?:
     */
    //swift
    fun main(args: Array<String>) {
        //10   "10" 可空类型
        val str: String? = null
        //转换为Int类型
        //告诉编译器  不要检查了  我一定不为空  还是可能为空  不建议使用
    //    str!!.toInt()
        //空安全调用符 返回的值其实就是可空类型
    //    str?.toInt()
    
    //    Int?
    //    if(str!=null){
    //        return str.toInt()
    //    }else{
    //        return -1;
    //    }
    //    Int?
        val b:Int = str?.toInt()?:-1
    //    if(str!=null){
    //        return str.toInt()
    //    }else{
    //        return -1
    //    }
        println(b)
    
    }
    
  6. kotlin - 人机交互:readLine()

    fun main(args: Array<String>) {
        //输出数据
        val a = 10
    //    println(a)
    
        //m+n
        var m:Int
        var n:Int
        //从控制台输入m和n
        m = readLine()?.toInt()?:-1
        n = readLine()?.toInt()?:-1
    
        println("m+n=" + (m + n))
    }
    
  7. kotlin - 自定义函数:有无参数和返回值

    fun main(args: Array<String>) {
    //    sayHello("张三")
        println(getLength("张三"))
    }
    //无参无返回值
    fun sayHello(){//返回值
        println("hello")
    }
    //有参无返回值
    fun sayHello(name:String){
        println("hello "+name)
    }
    //有参有返回值
    fun getLength(name:String):Int{
        return name.length
    }
    //无参有返回值
    fun get():String{
        return "hello"
    }
    
  8. kotlin - 顶层函数和嵌套函数:一等公民、独立于对象单独存在

    //函数式编程  函数式一等公民 函数可以独立于对象单独存在
    //顶层函数
    fun main(args: Array<String>) {
        //嵌套函数
        fun sayHello(){
            println("hello")
        }
        sayHello()
    }
    //顶层函数
    fun haha(){
    
    }
    
  9. kotlin - 字符串模板:${ place }

    fun main(args: Array<String>) {
        val result = createDiary("天安门")
        println(result)
    }
    //生成日记模板
    fun createDiary(place:String):String{
    //    val result = "今天天气晴朗,万里无云,我们去"+place+"游玩,首先映入眼帘的是,"+place+place.length+"个镏金大字"
        val result = "今天天气晴朗,万里无云,我们去${sayHello1()} 游玩,首先映入眼帘的是,${place}${place.length}个镏金大字"
        return result
    }
    fun sayHello1():String{
        return "halleo"
    }
    
    
  10. kotlin - 条件控制语句if:if语句有返回值,没有三元运算符

    /**
     * kotlin的if语句有返回值的  java if语句是没有返回值的
     * switch when表达式
     * kotlin一般都有返回值(函数式编程 闭包)
     */
    fun main(args: Array<String>) {
        val a = 10
        val b = 20
        //找到a和b中最大值
        val max = max(a, b)//Ctrl+Alt+L
        println(max)
    }
    
    //求最大值
    //kotlin没有三元运算符
    fun max(a: Int, b: Int): Int {
        return if (a > b) {
             a
        } else {
             b
        }
    }
    //如果只有一行 可以去掉{}
    //fun max(a: Int, b: Int): Int {
    //    if (a > b)
    //        return a
    //     else
    //        return b
    //}
    //最终精简
    //fun max(a: Int, b: Int): Int {
    //    return if (a > b) a else b
    //}
    
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容