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

浅谈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 = 1;

val name : String = "Alice" ;

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

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

     发现省去了 : 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?) {

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

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

      Kitlin是用Unit处理的,可以看到,sum方法没有返回值, 调用的时候

 写法是错误的,无法将一个无返回值的方法转为某一个类型。

      正确写法如下:  

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_ktest)
    var a = sumA(10,20) ;
}

 三、代码风格

1、命名风格

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

--类型名称首字母大写

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

--缩进用四个空格

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

  2、Unit

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WindCoder

Java代码块执行顺序初探

Java继承中对构造函数是不继承的,只是显式或者隐式调用,并且必须是在构造函数第一行。这里是隐式调用了super()。

751
来自专栏漫漫深度学习路

c++复杂声明

void (*funcPtr)(); 上面声明了一个指向函数的指针,当碰到这样一个比较复杂的声明时,最好的方法是从 中间开始和向外扩展: 从中间开始:即 从变量...

1697
来自专栏Petrichor的专栏

pycharm: 跳转 & 回退

862
来自专栏cnblogs

Vuex原来可以这样上手

     在Mvc模式大行其道的今天,后端通过各种Mvc框架实现视图与数据模型的隔离,而前端这方面也发展迅速。vue实现了Dom与viewModel双向绑定,使...

1915
来自专栏快乐八哥

Angular企业级开发(7)-MVC之控制器

1.MVC中的控制器 AngularJS的控制器主要为了把模型和视图连接在一起。大多数业务逻辑操作都会放在视图对应的控制器中。当然如果我们能够把业务逻辑放到后端...

1865
来自专栏向治洪

Kotlin语法基础之继承

Kotlin中所有的类都有一个公有的超类:Any,这是所有没有声明超类的类的默认父类。 class Example //隐式继承自Any Any!=Java...

1789
来自专栏Pythonista

Go语言基础

Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:

733
来自专栏极乐技术社区

使用ES6新特性开发微信小程序(5)——内建对象的变化

Object对象 Object.prototype.proto:对象具有属性proto,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保...

1998
来自专栏LanceToBigData

javaSE(九)之泛型(Generics)

前言 这几天分享了怎么搭建集群,这一篇给大家介绍的是泛型,在我们的很多java底层的源代码都是有很多复杂的泛型的!那什么是泛型呢?  泛型是Java SE 1....

19610
来自专栏Pythonista

Golang之面向对象和指针

824

扫码关注云+社区