kotlin基础语法(一)

本文介绍Kotlin语言的基础知识,包括函数定义、字符串处理、条件控制等内容,并提供了丰富的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习相关kotlin的有关知识,在爱奇艺上找到一个关于kotlin基础知识的是视频,看完之后感觉受益匪浅,这个只是基础知识视频,新手看还可以,大神就算了,下面是这个视频的网址:http://www.iqiyi.com/v_19rr82t3g4.html
主要都是以代码的形式:

fun main(args : Array<String>){
    println("This is my first kotlin project")
    println("3+5="+ test3(3,5));
    test4(10,20,30,50);
    println("匿名函数测试:"+ test5(3,5))
    test7()
    test9(80);
    test11()
    test12("水")
    test12(null);
    test13(10);
    test13(9);
    test13(8);
    test13(7);
    test13(1);
    test14();
    test15()
    test16()
    circumfeRenceOfCircle(radius = 10.0F)
    circumfeRenceOfCircle1(diameter = 20.0F)
    println("5的阶乘是:"+ recursiveTest(5));
    var num : BigInteger= BigInteger.valueOf(100L)
    println("100的阶乘是:"+ recurseveTest2(num));
    println("100的累加是:"+ ollAdd(100,0));
}

/*
* 自定义函数的格式:
* fun:函数定义关键字
*sunNormal函数名
* a,b为参数名
* Int为参数类型
* 最后的Int为函数的返回值
* */

//一个普通的函数
fun sumNormal(a : Int, b : Int) : Int{
    return a+b;
}

//表达式作为函数体,返回类型自动推断
//这个函数和上面的函数执行的效果是一样的
fun sumNormal1(a : Int, b :Int) = a+b


//无返回值类型的函数,类似于java中的void
//使用Unit关键字表示没有返回值,同时,没有返回值也可以什么都不写

fun sayHello(userName : String) : Unit{
    println("你好,"+userName)
}
//这个函数和上面的函数效果是一样的
fun sayHello1(userName: String){
    println("你好,"+userName)
}

/*
* 当一个函数使用public修饰符时,除非是无返回值的函数,否则必须明确注明函数的返回值
* */

//没有返回值的函数使用public修饰也可以不写返回值类型
public fun test1(){
    println("使用public修饰函数没有返回值可以不写返回值类型");
}
public fun test2(a : Int, b : Int) : Int{
    println("使用public修饰有返回值的函数必须明确注明返回值类型,不可以使用自动推断的返回值类型");
    return a+b;
}
//上面的总结是在菜鸟教程看到的,但是在使用的时候发现也可以使用下面的方法,并没有报错,可能是因为版本更新已经可以这样写了
public fun test3(a : Int, b : Int) = a+b;

//使用vararg修饰可变长度的参数列表
fun test4(vararg args : Int){
    println("获取到当前函数的参数列表的长度为:"+args.size);
    var num : Int = 0;
    for (i : Int in args){
        num += i;
    }
    println("当前参数和为:"+num)
}

//匿名函数lambda
fun test5(a : Int, b : Int) : Int{
    val sum : (Int,Int) -> Int = {x,y -> x+y}
    return sum(a,b);
}

//定义常量与变量:var定义变量
//var 变量名 : 变量类型 = 初始化值
//val 常量名 : 常量类型 = 初始化值
//编译器支持自动判断类型,声明是可以不指定类型,由编译器判断
fun test6(){

    var a : Int = 0;//普通变量定义,整型a的初始值为0
    val b = 10;//由编译器判断变量或常量的类型
    var c : Int;//如果在声明的时候不指定初始化值,则必须明确指定变量的类型

}


//字符串模板
/*
* $表示一个变量名或者变量值
* $varName表示变量值
* ${varName.fun}表示变量的方法返回值
* */
fun test7() : Unit{
    var a : Int= 1;
    var str : String = "My name is zyf";
    val s2 = "${str.replace("zyf","gwj")},but old name is zyf,共有${str.length}个字符串";
    println(s2);
}


//NULL检查
/*
* 在使用看的引用的时候需要做非空检查,一种是使用!!抛出空指针异常,另一种是字段后加?可不做处理返回为null或配合?:做空判断处理
* */
fun test8() : Unit{
    //类型后面加?表示可为空
    var age : String?  = "23"
    //抛出空指针异常,确保不会出现空值
    val ages = age !!.toInt()
    //不做处理返回null
    val ages1 = age?.toInt()
    //age为空返回-1
    val ages2 = age ?.toInt() ?: -1;
}

/*
* 条件控制
*
* */
fun test9(face : Int) : Unit{
    if(face > 80){
        println("这是一个帅哥")
    }else{
        println("赶紧去整容吧")
    }

}
//返回两个数中的较大的那个
fun test10(a : Int, b : Int) : Unit{
    var num : Int = 0;
    if(a > b){
        println("($a)和($b)中较大的那个数是:"+a);
    }else if(a < b){
        println("($a)和($b)中较大的那个数是:"+b);
    }else{
        println("($a)和($b)两个数相等");
    }


}

/*
* 字符串比较
* kotlin中对于字符串的比较中 : == 和java中的equals方法相同
* */
fun  test11() : Unit{
    var name1 : String = "张三";
    var name2 : String = "张三";
    if(name1 == name2){
        println("$name1 和 $name2 是同一个人" );
    }else{
        println("$name1 和 $name2 不是同一个人")
    }

    var name3 : String = "Andy";
    var name4 : String = "andy";
    println(name3.equals(name4,true));//第二个参数代表的意思是是否忽略大小写,默认是false
    println(name3.equals(name4,false));
}

/*
* kotlin中的空值处理
* null也是值,代表没有数据
* test12这个方法接受一个不为空的字符串,如果在参数的后面加上一个“?”,则表示传递过来的参数可以为空,这个方法很好的在编写代码的阶段就避免了NullPointException
* */
fun  test12(str : String?) : Unit{
    println("热"+str);
}

/*
* kotlin的when表达式
* */
fun test13(grade : Int) : Unit{
    when(grade){
        10 -> println("考了满分");
        9 -> println("还不错");
        8 -> println("挺好");
        else -> println("还需努力")
    }

}

/*
* kotlin的loop和range
*
* loop:循环
* range:区间
* */

public fun test14() : Unit{
    var nums = 1..100;//声明一个数组,这个数组中的值是1到100[1,100]

    var result : Int = 0;
   for (num : Int in nums){
       result += num;

   }
    println("${nums.first}到${nums.last}的和是:"+result);
    println("${nums.start}");
    //until表示从1到100但是不包含100
    var nums1 = 1 until 100;
    for(num : Int in nums1){
        //println(num)
    }
    //step表示跳过几步
    var nums2 = 1..20;
    for (a : Int in nums2 step 3){
        println (a)
    }
    //reversed对集合进行倒序排列
    var nums3 = nums2.reversed();
    for( a : Int in nums3){
        println(a);
    }
    //count
    println("${nums3.first}到${nums3.last}的总数为:"+nums3.count());
}

/*
* kotlin的list
* */
fun  test15() : Unit{
    var lists = listOf("买鸡蛋","买大米","买水果",20);
    for((i,e) in lists.withIndex() ){
        println("$i --> $e")
    }



}

/*
* map
* */
fun test16() : Unit{
    var map = HashMap<String,String>();
    map["学习"] = "学习";
    map["使我"] = "使我";
    map["快乐"] = "快乐";

    for(str : String in map.keys){
        println(map.get(str));
    }

}

/*
* kotlin默认参数和具名参数
*以下方法计算一个圆的周长
* 圆的周长的计算公式 = PI *直径或者PI*2*半径
* 普通情况下我们调用方法的时候需要床底两个参数,pi,半径或者直径,但是因为pi是一个常数,我们可以直接定义一个常量,那么在调用方法的时候就只需要传递一个参数就可以了,
* 但是方法接收的是两个参数,此时就可以使用具名参数,在传递参数的时候将参数名携带上,就可以了
* */
val PI = 3.1415926F;
fun circumfeRenceOfCircle(pi : Float = PI, radius : Float) : Unit{
    println("半径为$radius 的圆的周长为:"+(2 * PI * radius));
}
fun circumfeRenceOfCircle1(pi : Float = PI,diameter : Float) : Unit{

    println("直径为$diameter 的圆的周长为:"+(PI * diameter));
}

/*
* kotlin中字符串和数字之间的转换
* */
fun test17() : Unit{
    var a = "13";
    var b = 13;
    //数字转换为字符串
    a = b.toString();
    //字符串转数字
    b = a.toInt()
    //如果字符串中含有不是数字的字符,那么在转换的时候会报NumberFormatException
}

引用块内容


快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y

Markdown及扩展

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]

使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。

本编辑器支持 Markdown Extra ,  扩展了很多好用的功能。具体请参考Github.

表格

Markdown Extra 表格语法:

项目价格
Computer$1600
Phone$12
Pipe$1

可以使用冒号来定义对齐方式:

项目价格数量
Computer1600 元5
Phone12 元12
Pipe1 元234

定义列表

Markdown Extra 定义列表语法: 项目1 项目2
定义 A
定义 B
项目3
定义 C

定义 D

定义D内容

代码块

代码块语法遵循标准markdown代码,例如:

@requires_authorization
def somefunc(param1='', param2=0):
    '''A docstring'''
    if param1 > param2: # interesting
        print 'Greater'
    return (param2 - param1 + 1) or None
class SomeClass:
    pass
>>> message = '''interpreter
... prompt'''

脚注

生成一个脚注1.

目录

[TOC]来生成目录:

数学公式

使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.

  • 行内公式,数学公式为: Γ(n)=(n1)!nN
  • 块级公式:

x=b±b24ac2a

更多LaTex语法请参考 这儿.

UML 图:

可以渲染序列图:

Created with Raphaël 2.1.0 张三 张三 李四 李四 嘿,小四儿, 写博客了没? 李四愣了一下,说: 忙得吐血,哪有时间写。

或者流程图:

Created with Raphaël 2.1.0 开始 我的操作 确认? 结束 yes no
  • 关于 序列图 语法,参考 这儿,
  • 关于 流程图 语法,参考 这儿.

离线写博客

即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.youkuaiyun.com/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。

用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。

博客发表后,本地缓存将被删除。 

用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。

注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱

浏览器兼容

  1. 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
  2. IE9以下不支持
  3. IE9,10,11存在以下问题
    1. 不支持离线功能
    2. IE9不支持文件导入导出
    3. IE10不支持拖拽文件导入


  1. 这里是 脚注内容.
Kotlin种现代的静态类型编程语言,它设计用于在 Java 虚拟机上运行,并且与 Java 语言完全互操作。Kotlin语法简洁而富有表现力,使得开发者能够以更少的代码完成更多的工作。以下是 Kotlin 基础语法些关键点: ### 函数定义 函数在 Kotlin 中使用 `fun` 关键字来声明。例如,个简单的函数可以这样定义: ```kotlin fun greet(name: String): Unit { println("Hello, $name") } ``` 在这个例子中,`greet` 是函数名,`name` 是参数,其类型为 `String`,返回类型为 `Unit`,这相当于 Java 中的 `void`。 ### 变量和不可变值 Kotlin 使用 `val` 和 `var` 来声明变量。`val` 用于不可变(只读)变量,而 `var` 用于可变变量。 ```kotlin val immutableValue = 10 // 不可变 var mutableValue = 20 // 可变 mutableValue = 30 // 允许改变 ``` ### 类型推断 Kotlin 支持类型推断,这意味着你通常不需要显式指定变量的类型,编译器会根据赋值自动推断出类型。 ### 控制流表达式 控制流结构如 `if-else`、`when`(类似于 switch-case)以及循环结构 `for`、`while` 都非常直观。 ```kotlin val number = 5 when (number) { in 1..10 -> println("Between 1 and 10") else -> println("Not between 1 and 10") } ``` ### 空安全 Kotlin 的设计有助于避免空指针异常。变量默认是不可为空的,如果你想让变量接受 null 值,需要在类型后面加上问号 `?`。 ```kotlin var nullableString: String? = null nullableString = "Hello" ``` ### 集合 Kotlin 提供了丰富的集合操作,包括列表、集合和映射等。 ```kotlin val list = listOf(1, 2, 3) val map = mapOf("one" to 1, "two" to 2) ``` ### Lambda 表达式 Kotlin 支持 lambda 表达式,这使得编写函数式风格的代码变得简单。 ```kotlin val sum = { a: Int, b: Int -> a + b } println(sum(5, 3)) // 输出 8 ``` ### 扩展函数 Kotlin 允许我们为已存在的类添加新的方法,而无需继承或修改它们。 ```kotlin fun String.lastChar(): Char = this[length - 1] ``` 以上只是 Kotlin 基础语法小部分。要深入学习 Kotlin,建议通过官方文档或者在线课程进行系统学习,实践是掌握任何编程语言的关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值