kotlin的变量和函数

来源:互联网 发布:如何找淘宝客 编辑:程序博客网 时间:2024/05/17 23:54

简介

在现今天的程序语言中,基于JVM的语言非常多,如Scala,Groovy,JRuby等,而kotlin和这些语言一样,都只提供编译器,没有提供运行环境。自从2017年的Google的IO大会上提出Kotlin成为Android APP开发语言,Kotlin就瞬间被人熟知,然后本人也加入了koltin的学习使用大军中了。


一、文件

Java 的文件后缀为 .java
kotlin 的文件后缀为 .kt

二、变量类型

java

Java中变量有:成员变量,局部变量
java的有基本数据类型,以及对应的包装类

 基本数据类型  byte short int long float double boolean char  基本数据包装类 Byte Short Integer Long Float Double Boolean Character 

kotlin

kotlin中变量有:成员变量,局部变量,还有 全局变量
kotlin中只有内置数据类型,有点像java包装类

 内置数据类型 Byte Short Int Long Float Double Boolean Char 

二、定义变量

java

Java中变量必须定义在类里面,基本数据类型的成员变量都会有默认值,而其他类型和局部变量需要手动初始化
java中没有明确的变量和常量的概念,但是可以用final关键字定义不可修改的变量

int ok;         //若是成员变量则默认初始化值为0int no =1;       //定义int变量并初始化为1final long num; //final 关键字修饰,不允许在修改LongLong num  =0L ;  //包装Long类,没有默认值,需要收到赋值

kotlin

Kotlin中变量定义与java很大的不同,在Kotlin中,数据类型要放到变量名后面,并且用冒号分隔
Kotlin中有明确的常量和变量的概念,以var开头代表变量,val开头代表常量
Kotlin中有全局变量,也就是定义变量不需要在class类中,直接写在外面就能被全局访问到
Kotlin中所以数据类型都被视为一个对象,定义时都没有默认值,需要手动初始化。

var ok:Int =0  //定义Int变量ok,初始化值为0var no:Int =1   //定义Int变量no,初始化值为1val num:Long =0   //定义Int变量num,初始化值为0

Kotlin中在定义变量时不能直接赋null值,如果需要强行赋空值,得在null后加!!(强制为null)或者?(可空)
Kotlin定义变量时,手动初始化非空值,可以不用指定数据类型,类似JavaScript

var field:String =null   //报错,不能直接初始null值var field:String =null!! //强制初始化为null,后续使用必须赋值,否则报空异常var field:String =null//可空对象,后续使用不会报空异常var ok =0               //手动赋值初始化,可以不用定义类型

函数

编程语言,函数的定义基本都是由:函数头参数返回值几部分 组成

java

Java中更习惯称为方法,方法名不需要任何(funfunc)标识修饰
java 中返回值必须写,如果没有返回值就必须是void

/** *默认修饰范围 default *@param m int类型的参数 *@return int类型 **/ int add (int m,int n){ return m+n // 没有返回值,使用void修饰 void study(String content){   System.out.print(content) }

kotlin

Kotlin中函数名前必须使用fun 修饰,默认的修饰符为public
Kotlin中返回值放到最后,之间用:隔开,无返回值用Unit (可省)代替

/** *默认修饰范围 public *@param m Int类型的参数 *@return Int类型 **/fun add (m:Int ,n:Int): Int { return m+n} // 没有返回值,可以用Unit修饰  fun study(content:String ):Unit{  println(content) } //没有返回值,Unit可以省略 fun study(content:String ){  println(content) }

注: 对于Kotlin的函数这么定义,初学的时候可能不习惯,甚至吐槽比Java差远了,要这么定义很麻烦,我开始也是有一点不喜欢,但是当我熟悉之后,我就喜欢上这种定义了
1、Kotlin是一门多目标编译语言,除了可以编译成Java Byte Code,还能编程生成javaScript,甚至还可以对IOS支持,所以这样的语法是符合大众风格的
2、我们定义函数的时候,绝大多少都是公开范围无返回的函数,Kotlin就可以不用像Java一样每次都写 public void 了


包(Package)

java

java中的包(Package)和java中的目录是统一在一起的,当我们定义znq.demo.Myclass的类的时候,包名为znq.demo,而同时在我们的项目的目录结构中为创建对应的znq\demo目录结构

Kotlin

Kotlin中的包(Package)和目录却是没有什么联系的,当我们定义znq.demo.Myclass的类的时候,包名为znq.demo,而在我们的项目的目录结构中为不一定需要创建对应的znq\demo目录结构

全局

java

java中没有全局的概念,所有的变量和方法必须写在对应的类中

Kotlin

Kotlin中的变量和函数可以直接写在文件下中,也就是类外面,文件中也可以不定义class,这样的变量和函数被称全局变量(函数),它们不属于任何一个自己定义的类,可以在项目的全局中直接使用变量或函数名调用它们