kotlin基础语法(一)
来源:互联网 发布:万网域名怎么解析 编辑:程序博客网 时间:2024/05/24 01:04
最近在学习相关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)}//匿名函数lambdafun 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 表格语法:
可以使用冒号来定义对齐方式:
定义列表
- Markdown Extra 定义列表语法:
- 项目1
- 项目2
- 定义 A
- 定义 B
- 项目3
- 定义 C
定义 D
定义D内容
代码块
代码块语法遵循标准markdown代码,例如:
@requires_authorizationdef somefunc(param1='', param2=0): '''A docstring''' if param1 > param2: # interesting print 'Greater' return (param2 - param1 + 1) or Noneclass SomeClass: pass>>> message = '''interpreter... prompt'''
脚注
生成一个脚注1.
目录
用 [TOC]
来生成目录:
- 快捷键
- Markdown及扩展
- 表格
- 定义列表
- 代码块
- 脚注
- 目录
- 数学公式
- UML 图
- 离线写博客
- 浏览器兼容
数学公式
使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.
- 行内公式,数学公式为:
Γ(n)=(n−1)!∀n∈N 。 - 块级公式:
更多LaTex语法请参考 这儿.
UML 图:
可以渲染序列图:
或者流程图:
- 关于 序列图 语法,参考 这儿,
- 关于 流程图 语法,参考 这儿.
离线写博客
即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。
用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
博客发表后,本地缓存将被删除。
用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
注意:虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。
浏览器兼容
- 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
- IE9以下不支持
- IE9,10,11存在以下问题
- 不支持离线功能
- IE9不支持文件导入导出
- IE10不支持拖拽文件导入
- 这里是 脚注 的 内容. ↩
- Kotlin(一)语法基础
- Kotlin 基础语法(一)
- kotlin基础语法(一)
- Kotlin入门____基础语法(一)
- Kotlin学习(一)基础语法
- Kotlin语法(一)
- Kotlin与Swift 从零开始(一)基础语法
- Kotlin(二)-->基础语法
- Kotlin(二)-->基础语法
- Kotlin学习笔记之基础语法一
- Android kotlin入门与基础语法一
- Kotlin(一)基础
- Kotlin基础(一)
- Kotlin基本语法(一)
- Kotlin基本语法(一)
- Kotlin语法(二)基础语法
- Kotlin for Android(二)Kotlin基础语法
- Kotlin基础入门(一)
- Java学习5:static关键字内存分析详解及用法
- 树莓派
- thinkPHP
- 转载-python pdb调试以及sublime3快捷键设置
- python爬虫爬取简单的动态数据-异步加载问题
- kotlin基础语法(一)
- 整理JavaScript算法
- YY赔款2000万,游戏直播也会侵权?
- map任务和reduce任务个数如何计算
- 当2000万多头猪联接上网,会发生什么
- 蓝桥杯-包子凑数(完全背包)
- Windows下安装python2和python3双版本
- Hbase深入学习
- 回溯--深度优先搜索(01背包)