浅谈Kotlin(一):简介及Android Studio中配置

浅谈Kotlin(二):基本类型、基本语法、代码风格

浅谈Kotlin(三):类

浅谈Kotlin(四):控制流

通过上面的文章,在Android Studio中我们已经可以进行Kotlin编程了,接下来开始学习Kotlin的基本类型及语法。

一、基本类型

  在 Kotlin 中,所有变量的成员方法和属性都是一个对象。

  一些类型是内建的,它们的实现是优化过的,但对用户来说它们就像普通的类一样。

     

注意,第一个字母大写,Kotlin 区分大小写

主要是以下几种字面值常量:

--数型: 123 --长整型要加大写 L : 123L --16进制:0x0f --二进制:0b00001011

注意不支持8进制

  Kotlin 也支持传统的浮点数表示:

-- 默认 Doubles : 123.5 , 123.5e10 -- Floats 要添加 f 或 F :123.5f

 二、基本语法

  知道了Kotlin支持哪些基本类型。下面开始了解基本语法。

  1、Kotlin定义声明一个属性的两种写法

    · var : 变量

    · val  : 常量

    注意:不管定义常量(val)还是变量(var) 都必须要给定一个值。

    声明变量/常量的语法为 :  var  age : Int = ;

                  val name : String = "Alice" ;

                                常量(val)/变量(var) 属性名 : 类型 = 初始值 ;

    Kotlin还提供一种写法 var age = ;

     发现省去了 : Int 即 声明这个属性是什么类型的,也能编译通过,这就是Kotlin的特点,自动推导出该值是什么类型。

      都没有报错。

    ①、变量var的语法

    很奇怪java中 变量 并不要求要初始值,我们看下Kotlin中 不给一个变量初始化会发生什么。

    

    结果是报错:提示需要添加一个初始值。

    选中" Add initializer" 之后 会发现系统给我们一个初始值 0 。

    看一下上述6种基本类型 系统给定的初始值:

    

    ②、常量val的语法:

    声明常量的时候和变量一样也需要提供一个初始值,并且这个值是之后无法修改的。  

    

    上面可以看到,定义了一个Int类型的常量age ,值为1。

    后续代码中对age常量进行赋值修改,提示 让 age这个常量 作为 变量类型。选中会发现 val age:Int = 1 --> var age:Int =1;

    

    综上:val声明常量和java中final使用一致,var声明变量必须要给定一个初始值。

    

  2、Kotlin注释规范

     与java一致

     ①、  单行注释  

        

      ②、块级注释

        

  

  3、kotlin定义一个方法/函数

     基本格式:

     fun 方法名(参数名 : 类型 ,参数名 : 类型 ...) : 返回类型{

     }

    

     举例:定义一个方法,传入两个类型Int的参数,计算参数之和,返回Int类型的结果。

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
setContentView(R.layout.activity_ktest)
var result : Int = sum(10,20) ;
} /**
* 计算两个Int类型的和并返回
*/
fun sum(a: Int , b: Int) : Int{
return a + b
}

     注意点:方法中的参数不需要加var

     

  

        看到这,大家也应该会创建基本的方法了。但是有个疑惑,如果一个方法不需要返回值呢,类似于Java中的 void

      Kitlin是用Unit处理的,可以看到,sum方法没有返回值, 调用的时候 写法是错误的,无法将一个无返回值的方法转为某一个类型。

      正确写法如下:  

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_ktest)
var a = sumA(10,20) ;
}
  /** * 计算两个Int类型的和并返回 */ 
  fun sum(a: Int, b: Int): Unit {
   //不做处理
  }
  //如果无返回值,Unit也可以省略
  fun sumA(a:Int , b:Int) {   
   //不做处理
  }

    

 

 三、代码风格

  1、命名风格

--使用骆驼命名法(在命名中避免下划线)

--类型名称首字母大写

--方法和属性首字母小写

--缩进用四个空格

--public 方法要写说明文档,这样它就可以出现在 Kotllin Doc 中

    

  2、Unit

     如果函数返回 Unit ,返回类型应该省略:

    

浅谈Kotlin(二):基本类型、基本语法、代码风格的更多相关文章

  1. 【.Net基础二】浅谈引用类型、值类型和装箱、拆箱

    目前在看CLR via C#,把总结的记下来,索性就把他写成一个系列吧. 1.[.Net基础一] 类型.对象.线程栈.托管堆运行时的相互关系 2.[.Net基础二]浅谈引用类型.值类型和装箱.拆箱 引 ...

  2. 浅谈Kotlin(四):控制流

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 本篇介绍Kotlin ...

  3. 浅谈Kotlin(三):类

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 已经学习了前 ...

  4. 浅谈Kotlin(一):简介及Android Studio中配置

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...

  5. 浅谈 js 数字格式类型

    原文:浅谈 js 数字格式类型 很多人也许只知道 ,123.456,0xff 之类的数字格式.其实 js 格式还有很多数字格式类型,比如 1., .1 这样的,也有 .1e2 这样的. 可能有人说这是 ...

  6. 浅谈Kotlin中的函数

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/UV23Uw_969oVhiOdo4ZKAw作者:连凌能 Kotlin,已经被Android官方 ...

  7. Android开发-浅谈架构(二)

    写在前面的话 我记得有一期罗胖的<罗辑思维>中他提到 我们在这个碎片化 充满焦虑的时代该怎么学习--用30%的时间 了解70%该领域的知识然后迅速转移芳草鲜美的地方 像游牧民族那样.原话应 ...

  8. 如何用一个语句判断一个整数是不是二的整数次幂——从一道简单的面试题浅谈C语言的类型提升(type promotion)

    最近招聘季,看JULY大哥的面试100题时,碰到这么一个扩展问题: 如何用一个语句判断一个整数是不是二的整数次幂?(此题在编程之美也有) easy, 2的整数次幂的二进制形式只有一个1,只要用i和i- ...

  9. 【Vue】浅谈Vue(一):从模板语法数据绑定、指令到计算属性

    写在前面 今年前端届比较有意思,从大漠穷秋发表文章比较angular和vue,继而致歉vue作者.社区,从谷歌辞去Angular Developer PM in China一职并且呼吁大家停止各种无谓 ...

随机推荐

  1. Ubuntu下OpenCV版本切换

    1.假如安装了opencv以下两个版本: opencv-2.4.13 opencv-3.2.0 2.安装目录分别为: /usr/local/opencv-2.4.13 /usr/local/openc ...

  2. Apace、Ngnix、Tomcat三者关系

    Apache,指的应该是Apache软件基金会下的一个项目--Apache HTTP Server Project:Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器.通用 ...

  3. Java核心技术及面试指南 流程控制方面的面试题答案

    2.2.5.1 switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 1 switch里可以用char,byte,short,int这些基本类型,以及它们的封装类.  ...

  4. 解决ionic3 android 运行出现Application Error - The connection to the server was unsuccessful

    在真机上启动ionic3打包成的android APK,启动了很久结果弹出这个问题: Application Error - The connection to the server was unsu ...

  5. C#--对象转Json序列化

    前言 最近在研究Android项目,其中涉及到Android中解析Json数据的问题,需要模拟网络中传递Json数据的模式,因为以前是.net的工程师,所以想着从.net的平台开发服务,传递Json格 ...

  6. String的split方法,你真的懂吗

    String的split方法相信大家都不陌生,或多或少都用过它将字符串转成一个数组,但是就是这样一个简单的方法,里面也有一个不得不注意.不深不浅的小坑. 本地测试代码如下图所示: 图1 大家会发现sp ...

  7. Netty源码分析(二):服务端启动

    上一篇粗略的介绍了一下netty,本篇将详细介绍Netty的服务器的启动过程. ServerBootstrap 看过上篇事例的人,可以知道ServerBootstrap是Netty服务端启动中扮演着一 ...

  8. docker - 容器里安装redis

    在docker中安装redis 使用命令行安装redis 下载并解压 wget http://download.redis.io/releases/redis-3.2.6.tar.gz tar -xv ...

  9. 接口隔离原则(ISP)

    设计应用程序的时候,如果一个模块包含多个子模块,那么我们应该小心对模块做出抽象.设想该模块由一个类实现,我们可以把系统抽象成一个接口.但是要添加一个新的模块扩展程序时,如果要添加的模块只包含原系统中的 ...

  10. Redis客户端操作之Jedis

      在前面的文章给大家详细的介绍了Redis各种知识点,本文主要给大家介绍下java程序怎么操作Redis数据. Redis之集群环境搭建   Redis官网中提供了各种语言的客户端,使用起来很方便, ...