Kotlin中国 为您找到相关结果 202

Java/Kotlin和C/C++的混编

Java和C/C++混编技术是一种常用的开发技术,目的是使用C/C++弥补Java在高性能计算方面的不足。如Android的Native开发,我们经常是使用Native代码来处理一些复杂的计算,比如图象处理。实现Java/Kotlin和C/C++通讯的接口叫Jni,下面我们来看一下Jni接口的基本用法。 1. Java/Kotlin调用C/C++方法 首先在Java/Kotlin中声明一个Native的空方法 package com.test.native; public class Main { //Java: 使用native关键字声明 public native String getString(int index); //Kotlin: 使用external关键字声明 public ...阅读全文

博文 2017-08-21 15:03:54 wzjing

Kotlin——这次入门就不用放弃了

写在文前 本文将展示在Android中会遇到的实际问题,并且使用Kotlin怎么去解决它们。一些Android开发者在处理异步、数据库或者处理Activity中非常冗长的listener时发现了很多的问题。通过一个个真实的场景,我们一边解决问题一边学习Kotlin的特性。 快速上手 如果不知道如何在Kotlin中写一个相当简单的Java表达式。这里有一个简单的诀窍,就是在AndroidStudio的Java文件中编写一段代码,然后将其粘贴到kt文件中,它会自动转换为Kotlin。 Kotlin优势 它更加易表现:这是它最重要的优点之一。你可以编写少得多的代码。 它更加安全:Kotlin是空安全的,也就是说在我们编译时期就处理了各种null的情况,避免了执行时异常。你可以节约很多调试空指针异常...阅读全文

博文 2017-06-11 22:02:10 江湖感觉乱

Kotlin学习(三)——运算符

以下是完整的位运算符(只用语Int和Long) 1.shl(bits):有符号左移 (Java 的 <<) 2.shr(bits):有符号右移 (Java 的 >>) 3.ushr(bits):无符号右移 (Java 的 >>>) 4.and(bits):位与 5.or(bits):位或 6.xor(bits):位异或 7.inv():位非 一、一元操作 一元前缀操作符 一元前缀操作符 当编译器处理例如表达式 +a 时,它执行以下步骤:确定 a 的类型,令其为 T。为接收者 T 查找一个带有 operator 修饰符的无参函数 unaryPlus(),即成员函数或扩展函数。如果函数不存在或不明确,则导致编译错误。如果函数存在且其返回类型为 R,那就表达式 +a 具有类型 R。注意 这些操作以...阅读全文

博文 2017-05-28 23:02:08 _陈小平

Kotlin语法基础,运算符

运算符 计算机程序中最小的程序单位成为表达式,每个表达式都可以由两部分组成,即操作数和运算符。操作数可以是变量、常量、类、数组、方法等,甚至是其他表达式。而运算符则用于支出表达式中单个或者多个操作数参与运算的规则,表达式通过运算之后产生的值依赖于表达式中包含的运算符的优先级和结核性。Kotlin语言包含了Java语言中的所有运算符的特性,并结合C语言的优点,增加自定义运算符的逻辑。这些运算符之中,主要包括有:算数运算符、区间运算符、逻辑运算符、关系运算符、赋值运算符、自增自减运算符等。 根据操作数的数量来划分,运算符又可以分为一目运算符、双目运算符。 - 一目运算符用于单一操作对象,又称单目运算符,如:++a、!b、i–等。 - 双目运算符是中置的,它拥有两个操作数,比如:a+3、a*b K...阅读全文

博文 2017-06-16 10:00:41 yzzst

Swift 4 新功能详解 《What's New in Swift》

简介:Swift 4来袭,这次升级来说好的很多,大部分都是介于Swift 3的基础上附加的,基本语法是没有什么大的变化的.想想Swift2-Swift3的变化,那一段蛋疼的时间.Swift 4的这次更新,真的爽太多了Swift 4需要安装Xcode 9--->下载链接 Xcode 9同时支持Swift 3\Swift 4,你的项目中的Target可以是Swift 3.2或Swift 4,当想迁移到Swift 4时,你可以通过Edit/Convert/To Current Swift Syntax…来打开转换工具。新特性:1.开区间 SE-0172带来 种新的RangeExpression协议和 组前缀/后缀操作符给开区间.比如现在区间论是上界还是下界都可以不指定Swift 3的写法-----...阅读全文

Kotlin 关系运算符和Boolean

Kotlin的关系运算符和JAVA,c#都是一样。 没啥子区别 都是那几个。 > 大于 < 小于 >= 大于等于 <= 小于等于 != 等于 == 等于 上面这些符号,应该是不难看懂。 上面这些都是关系运算符,在没有学习if的时候,最主要的使用方式是结合Boolean。 在Kotlin中两个数的比较会返回一个结果。这个结果是就是布尔值。 Boolean 布尔类型。 布尔值只有两个值。一个代表是真,一个是假。在计算机中写作true,和false。 结合上面的说面说 Boolean可以接受两个表达式比较的值。或者说表达式比较的值是布尔类型。 fun main(args:Array) { Boolean bool=1>0//返回值true println(bool) ...阅读全文

博文 2017-09-24 16:00:00 T-ARF

Kotlin学习(十): 可见性修饰符和数据类

Interoperable Java中有可见性修饰符(private...),而Kotlin中也是有这样的修饰符,但也有一些不一样,下面来学习Kotlin中的可见性修饰符(Visibility Modifiers)和数据类(Data Classes)的相关知识。 可见性修饰符(Visibility Modifiers) Kotlin有四种可见性修饰符,分别是public、internal、protected和private,默认的修饰符是public,除了internal之外,其他三种修饰符与Java的访问权限一样。 Kotlin的可见性除了用于类,对象,接口,构造函数,属性之外,还用于属性的setter方法(getter的可见性是由属性的可见性决定的)。 属性可见性修饰 // 文件名: e...阅读全文

博文 2017-05-30 14:02:08 叫我旺仔

Kotlin-类和接口

类的声明 同Java、Python等一样,Kotlin使用class关键字来声明一个类。 class Skill { } 创建一个对象实例: val fireBallSkill = Skill() Kotlin中创建对象不需要new。 构造函数 主要构造函数 class Skill public constructor(var name: String = "未知") { } Kotlin的主构造函数很特别,就像上面那样。既然是函数,我们同样可以为它指定默认值。参见【Kotlin-函数:http://www.jianshu.com/p/3a815c51dcb5】。如果你不需要可见性修饰符(不写表示public),可以省略constructor。关于可见性修饰符参见【Kotlin基础语法:ht...阅读全文

博文 2017-05-27 15:05:57 CoorChice

7.基本操作符(BasicOperators)

基本操作符 kotlin_基本操作符 一个符号或单词,类似数字的+ - * / ,用于运算或者操作 同时操作对象的数目,被称之为几元操作符 赋值运算符: 赋值运算a=b var a = 5 val b = 10 a = 2 + 1 a = b 算术自反赋值运算符 它是一种由两个普通运算符组成的符合运算符,它包括:“+=”、“-=”、“*=”、“/=”、“%=”。 var a = 5 val b = 10 a += b a -= b a *= b a /= b a %= b 算数运算符 基本的算术运算:加法“+”、减法“-”、乘法“*”、除法“/”、取余“%”、以及自增自减运算 var a = 2 + 1 val b = 10 - 2 val c = 3 * 4 val d = 10 / 5 ...阅读全文

博文 2017-09-28 19:03:54 大耳朵儿图图

Kotlin搞起来——4.类与对象

PS:有小伙伴说配图有点意思,嘿嘿,今天的配图是: 本节我们继续来学习Kotlin的语法,这节学习的是非常常用的类与对象, 把这四节的内容都掌握了,基本就算kotlin入门了~不逼逼,开始本节内容~ 1.类的定义与对象实例化 Kotlin不同于Java,**允许在一个文件中定义多个类**, 首先关注的一点是:类,成员变量,成员方法的作用域,写个简单的例子: 然后打开生成 .class文件 可以看到对应的修饰符: 从中我们可以得出以下结论: 没有任何修饰符,默认是private的,另外成员变量会默认生成 public final 的 getter和setter方法,如果使用了private修饰,则不会生成! 一清二楚,另外kotlin中还允许直接class 类名,没有类实体,一般用于表示概念(...阅读全文

博文 2017-05-27 15:11:45 coder_pig

Kotlin笔记 类属性和类变量

注意:属性和变量不同,属性是指一组get和set方法和backing field,变量是指field var是可变属性,val是赋值一次,可读属性 public class Address { public var name: String = ... public var street: String = ... public var city: String = ... public var state: String? = ... public var zip: String = ... } //使用属性 fun copyAddress(address: Address): Address { val result = Address() // there's no 'new' key...阅读全文

博文 2017-05-27 15:27:32 yangweigbh

Kotlin从0到1——运算符

运算符的作用是操纵对象和数据,它以一个或多个变量为基础,生成新的值。  运算符具有优先级和结合性。优先级决定一个表达式存在多个运算符时各部分的计算顺序。结合性决定了在相同优先级的情况下是从左到右(左结合)还是从右到左(右结合)。Kotlin中运算符优先 级和结合性参见下表(数字越小,优先级越高): 符号 优先级 结合性 目数 说明 . 1 从左到右 双目 点 () 1 从左到右 双目 小括号 [] 1 从左到右 双目 中括号 ++ 2 从右到左 单目 前缀增 -- 2 从右到左 单目 前缀减 + 2 从右到左 单目 正号 - 2 从右到左 单目 负号 ++ 2 从右到左 单目 后缀增 -- 2 从右到左 单目 后缀减 ! 2 从右到左 单目 逻辑非 * 3 从左到右 双目 乘法 / 3 从左...阅读全文

博文 2017-07-30 19:03:46 亲亲娆娆

【译】ObjectBox官方文档——ObjectBox与Kotlin

【译】ObjectBox官方文档——ObjectBox与Kotlin 转载请注明出处 第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与 Realm 和 GreenDAO 的对比请查看这篇博客 官网:ObjectBox 官方示例:Github ObjectBox 在 Android 平台上为 Kotlin 提供了完整的支持。这允许使用 Kotlin 类(常规类和data类)来创建实体。通过对 Kotlin 的支持,你可以高效地构建更快的应用程序。 配置 配置方式与 java 项目的配置相同,请参阅简介页面。此外,我们提供了一个很小的 Kotlin 扩展函数的依赖库。我们会对它持续更新,所以让我们知道你对它的建议和意见。只需将其添加到模块依赖项: dependencies {...阅读全文

博文 2017-10-02 19:03:43 YunC

Kotlin进阶之内联函数(Inline Functions)

使用高阶函数会带来一些运行时的效率损失:每一个函数都是一个对象,且这个函数对象捕获了一个闭包。也就是说,闭包内的变量可以在函数对象内部访问。内存分配(为函数对象和类)和实际调用将引入运行时间开销。 但通过使用内联λ表达式,可以避免这些情况的出现。下面的函数是这种情况的很好例子。lock()函数可以非常容易的在调用处被内联。考虑下面的情况: lock(l) { foo() } 编译器没有为参数创建一个函数对象并生成一个调用。而是生成了如下代码: l.lock() try { foo() } finally { l.unlock() } 这不就是我们一开始想要的? 为了让编译器这么做,我们需要使用inline修饰符来标记lock()函数: inline fun lock(lock: Loc...阅读全文

博文 2017-06-02 12:02:23 谁耳

Kotlin学历之抽象类与接口

简述Kotlin 中的抽象类和接口与 Java 8 类似,同样用到abstract、interface关键字,与java7以及之前最大的不同就是Kotlin的接口是可以有实现的。抽象类抽象类的格式如下:abstract class 抽象类名[(主构造函数)][: 继承父类和实现接口] {……}例:声明一个抽象的Person类,一个主构造函数,一个name属性。abstract class Person(val name : String) { }注意:即使不用 open 关键字修饰,抽象类也是可以被继承的,想想也很容易明白,因为抽象类本来就是用来继承的,所以就可以省略open关键字。接口接口类的格式如下:interface 接口类名[: 继承的接口] {……}例:声明一个接口A,一个接口B,...阅读全文

Kotlin學習筆記(#佔位符#)

kotlin類型安全 fun getName():String?{ //String可空類型 return null } fun main(args:Array){ var name = getName()?:return //返回null則return println(name.length) //智能類型推斷,所以不用?. } var value:String? = "hello" //確定可空類型有值 print(value!!.length) //強制拆箱 kotlin常用操作符 Elvis操作符 ?: 如果?:左邊表達式非空,elvis返回左邊結果,否則返回右邊結果 val a = b?.length?:-1 ==> val a:Int = if(b!=null) ...阅读全文

博文 2017-06-20 14:04:07 yikwing

Kotlin学习(十三): 集合(Collections)和范围(Ranges)

Kotlin 集合(Collections) Kotlin的集合类型和Java不一样,Kotlin的集合分为可变(读写)和不可变(只读)类型(lists, sets, maps, etc),可变类型是在不可变类型前面加Mutable: List和MutableList Set和MutableSet Map和MutableMap 举个栗子: val numbers: MutableList = mutableListOf(1, 2, 3) val readOnlyView: List = numbers println(numbers) // prints "[1, 2, 3]" numbers.add...阅读全文

博文 2017-06-19 11:03:59 叫我旺仔

Kotlin学习笔记(6)- 属性

系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正。Kotlin学习笔记(1)- 环境配置Kotlin学习笔记(2)- 空安全Kotlin学习笔记(3)- 语法Kotlin学习笔记(4)- 流程控制Kotlin学习笔记(5)- 类Kotlin学习笔记(6)- 属性 一、属性声明 一般的说,类是属性和逻辑的集合。我们用方法封装和处理逻辑,用变量声明属性。所以可以大言不惭的说一句,属性声明在类中是必不可少的。在《Kotlin学习笔记(3)- 语法》中我们介绍过,kotlin中的属性声明有两种:var声明普通变量,val声明只读变量(暨final类型)。其实还有几点需要说明。 类中声明的属性,一定要初始化,否则会编译错误。除非你对属性使用了abstract进行修饰。 var name...阅读全文

博文 2017-05-31 00:02:07 我爱吃栗子啊

Kotlin双引号

Kotlin双引号:: Kotlin 中 双冒号操作符 表示把一个方法当做一个参数,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。先来看一下例子: fun main(args: Array) { println(lock("param1", "param2", ::getResult)) } /** * @param str1 参数1 * @param str2 参数2 */ fun getResult(str1: String, str2: String): String = "result is {$str1 , $str2}" /** * @param p1 参数1 * @param p2 参数2 * @param method 方法名称 */ fun loc...阅读全文

博文 2017-07-07 16:04:08 塑料机霸

Kotlin Koans学习笔记(3)

这是Kotlin Koans学习笔记的第三篇。第一篇在这里,第二篇在这里。 这一部分一共7个任务,所有的任务都是围绕日期展开,日期对象具有年、月、日三个属性: data class MyDate(val year: Int, val month: Int, val dayOfMonth: Int) 这一部分的任务主要是练习Kotlin对象运算符的重载。 Kotlin有固定数目的符号运算符,我们可以很简单的将这些运算符应用到任何一个类。具体的实现方法就是:对需要实现的运算符以Kotlin保留的函数名创建一个函数,这个运算符就会自动映射到相应的函数。为了提醒编译器我们重载了一个运算符,我们需要将重载函数标记为operator。 在后面的任务中我们可以看到这一特性将大大的提高代码的简洁性和可读性。...阅读全文

博文 2017-05-23 14:30:21 唐先僧

从零开始的Kotlin之类和对象(一)

从零开始系列: 从零开始的Kotlin之类和对象(一) 从零开始的Kotlin之类和对象(二) 构造器 主构造器 Koltin 中的类可以有一个 主构造器,以及一个或多个 次构造器,主构造器是类头部的一部分,位于类名称之后 class Person constructor(firstName: String) {} 如果主构造器没有任何注解,也没有任何可见度修饰符,那么constructor关键字可以省略。主构造器中不能包含任何代码,初始化代码可以放在 初始化代码段中,初始化代码段使用 init关键字作为前缀。 class Person constructor(firstName: String) { init { System.out.print("FirstName is $firstN...阅读全文

博文 2017-05-23 12:00:12 居合子

kotlin 函数和 Lambda 表达式

1 尾递归函数tailrec 修饰符标记 函数必须将其自身作为它执调用的最后一个个操作。 不能再try/catch/finally 块中使用 tailrec fun findFixPoint(x: Double = 1.0): Double = if (x == Math.cos(x)) x else findFixPoint(Math.cos(x)) 2 高阶函数和lambda 表达式 高阶函数是将函数用作参数或返回值的函数。 --lambda 表达式总是被括号括着, --其参数(如果有的话)在 -> 之前声明(参数类型可以省略), --函数体(如果存在的话)在 -> 后面。 3 在 Kotlin 中有个约定,如果函数的最后一个参数是函数,并且你传递lambda表达式作为相应的参数,你可以...阅读全文

博文 2017-06-13 10:02:14 NiceDream

Android kotlin 类

类 类的定义 modifiers ("class" | "interface") SimpleName typeParameters? primaryConstructor? (":" annotations delegationSpecifier{","})? typeConstraints (classBody? | enumClassBody) classModifier: 类属性修饰符,标示类本身特性。 abstract //抽象类标示 final //标示类不可继承,默认属性 enum //标示类为枚举 open //类可继承,类默认是final的 annotation //注解类 accessModifier: 访问权限修饰符 private //仅在同一个文件中可见 prote...阅读全文

博文 2017-06-06 11:02:09 NiceDream

Android开发,Kotlin的了解与学习(六)-----类与继承

前几章已经把kotlin最基本的语法、数据结构等说清楚了,接下来这两章主要讲解kotlin中关于类和接口的相关知识 类 类这个东西使用和java比较类似,最简单的如下 class innerClass { }再class之前可以加private protected internal 或者public,默认不写就是public了 另外需要注意的是,如果类的内部没有实体,可以直接这么写 class innerClass不加括号 构造方法 提到类,肯定还会提到他的构造方法 kotlin中的构造方法和java有很大的不同,kotlin的构造方法分为两种:主构造方法、次构造方法 1.主构造方法: class InnerClass constructor(name: String) { }是的,kotl...阅读全文

博文 2017-06-24 05:01:02 Stanny_Bing

Kotlin基础-标签

关于标签 在kotlin中使用过标识符跟@符号来定义一个标签,使用@符号后面跟标识符来引用一个标签在kotlin中每一个函数都与一个或多个地址对应,而每个变迁也是与一个或多个地址对应,所以函数本身就是一个标签由于匿名还属没有函数名,那么我们可以自定义一个标签来指向这个函数地址 This表达式 在Kotlin,有时候需要调用自身的函数或者变量,会用到this表达式1、在类的成员中,this指的是该类的当前对象2、在扩展函数或者带接受者的函数字面值中,this表示在点左侧传递的接收者参数3、如果this没有限定符,它指的是最内层的包含它的作用域。要引用其他作用域中的this,请使用 标签限定符 关于标签的指向: 下面会用this演示标签的指向: 调用 当我们在调用ThisInnerClass 的...阅读全文

博文 2017-06-04 22:02:09 孙小磊

kotlin属性和字段

Kotlin的类可以有属性。 属性可以用关键字var声明为可变的,否则使用只读关键字val。Getters 和 Setters 声明一个属性的完整语法:var [: ] [= ] [] [] 其初始器(initializer)、getter 和 setter 都是可选的。属性类型如果可以从初始器 (或者从其 getter 返回值)中推断出来,也可以省略。一个只读属性(val声明)的语法和一个可变的属性的语法有两方面的不同:1、只读属性用val开始代替var。2、只读属性不允许 setter。实例:class Address(province: String) {...阅读全文

博文 2017-05-29 17:02:09 甲乙丙丁你我他

Kotlin学习系列----类和继承,补充? ?: ?. !!符号

相关资料: Kotlin官网: https://kotlinlang.org/ Kotlin的中文文档: http://www.kotlindoc.cn/ kotlin官方中文翻译文档网址(这个翻译较准确):https://www.kotlincn.net/docs/reference/ 知乎上看到的一篇视频教学地址:https://zhuanlan.zhihu.com/p/23101437 先补充上篇Kotlin学习系列—-定义变量及基本属性里出现?与可能会碰到的? ?: ?. !!这些符号,然后我们一起来看看Kotlin的类和继承。 补充: 在Kotlin中申明一个变量,如果类型后面不加?则不能直接给此变量赋值为null,在类型后面加上?就变成了可空类型,而可空类型可以直接赋值为null...阅读全文

博文 2017-09-15 15:01:09 github_37847975

Kotlin类和继承

Classes 类在Kotlin中使用class关键字被声明 class Invoice { } 类声明由类名和类头组成(指定它的类型参数,主要构造函数等等)。被花阔号括起来的类体。类头和类体是可选的。如果那个类没有类体,花括号能够被省略。 class Empty Constructors(构造器) 在Kotlin中一个类能够有一个主要构造函数和一个或多个次级构造函数。首要构造函数是类头的一部分:他在类名后面(可选类型参数) class Person constructor(firstName: String) { } 如果主要构造函数没有任何注解和可见修饰符,constructor关键字可以被省略: class Person(firstName: String) { } 主要构造函数不能包...阅读全文

博文 2017-06-23 10:03:51 耿直的吃瓜群众陈磊陈老师

Kotlin笔记

之前搞过一小段时间的Swift,发现Kotlin和Swift很像,哦,不,应该是Swift和Kotlin很像,Kotlin早在2010年就发布了。Swift是后来者。 一. 第一篇 三元表达式Kotlin不能使用三元表达式,可以用一行if else来替代,看起来更简单易懂fun > max(a:T,b:T) : T { return if (a>b) a else b //(a > b) ? a : b } 方法体里的if else 和java里的三元表达式是等价的还等价于:fun > max(a:T,b:T) : T = if(a>b) a else b 因为方法体里就是直接return了这个表达式,而表达式是有值的只...阅读全文

博文 2017-06-12 16:02:20 Thresh0ld

kotlin阅读笔记(10)-泛型

主要内容 java泛型 koltin泛型 类型保护 java泛型 泛型,即 参数化类型。将类型参数化,可以用在类,接口,方法上。作用是用于规范类型。用在类上时: class Box{ } 用在接口: interface Box{ } 用在方法,用于声明泛型: T read(T t){ } 通配符: class Box{ } 此处,?可表示任何类型,同时,通配符分为通配符上限和通配符下限。通配符上限是指参数只能是某个类或子类,如限定类型只能为String类或其子类: public void display(Box box){ } 通配符上限指参数只能是某个类或该类型是其父类,如: public void display(Box...阅读全文

博文 2017-05-27 15:21:47 黑石礁大魔王

KotLin(1.1)学习笔记(2)——this关键字

这一块的内容在官网介绍中已经比较清楚了,这里基本是复数一遍加深印象。为了表示当前的 接收者 我们使用 this 表达式:在类的成员中,this 指的是该类的当前对象在扩展函数或者带接收者的函数字面值中, this 表示在点左侧传递的 接收者 参数。 如果 this 没有限定符,它指的是最内层的包含它的作用域。要引用其他作用域中的 this,请使用 标签限定符:限定的 this要访问来自外部作用域的this(一个类 或者扩展函数, 或者带标签的带接收者的函数字面值)我们使用this@label,其中 @label 是一个 代指 this 来源的标签: /** *限定词this的demo */ class TestThisA{ inner class TestThisB{ fun Int.foo...阅读全文

博文 2017-05-27 16:02:11 范式魂

Kotlin阅读笔记(5)-属性和字段

主要内容 properties声明 属性重载 properties声明 此处的属性类似C#中定义的属性,非java中属性,首先学习下C#中属性: 属性提供灵活的机制来读写或计算私有字段值,相当于类的成员函数,可以看做类的公有函数,提供 accessors 访问私有字段。 它的优点有哪些? 封装,只能通过 accessors 访问私有字段 统一,通过属性访问字段,保证字段访问安全 可控,accessors可以限制字段输入和输出 属性非引用类型 为什么要有属性? 试想下没有属性这个特性,要实现访问字段,有哪些实现方式? 方式一:直接暴露字段,设置成public,通过对象名访问字段。缺点:赋值以及取值不可控。 方式二:将字段设置成private,提供get和set函数,通过函数的方式访问字段。缺点...阅读全文

博文 2017-05-27 15:27:01 黑石礁大魔王

Kotlin入门之访问修饰符

类、对象、接口、构造函数、函数、属性以及它的setters 可以拥有 访问修饰符(getters往往跟随属性的访问修饰符)。在Kotlin中,总共有四种访问修饰符:private , protected , internal and public,当你没有显示指定访问修饰符的时候,默认使用public。 Packages 函数、属性、类、对象和接口可以在最顶级的包下面进行声明: // file name: example.kt package foo fun baz() {} class Bar {} 如果你没有显式指定访问修饰符的话,默认是public,意味着你的声明可以在任意地方访问 如果你显式指定修饰符为private,那么你就只能在声明的文件中访问 如果你显式指定修饰符为intern...阅读全文

博文 2017-05-27 15:18:06 I二师兄I

Visual Studio 2017启动x86的Android模拟器失败

Visual Studio 2017启动x86的Android模拟器失败 Visual Studio 2017默认提供多个Android模拟器。其中,x86模拟器运行较快。但是由于和Hyper-V服务冲突,所以默认无法启动。用户手动关闭Hyper-V服务才可以。在开始菜单中,输入cmd,显示命令行提示符。右击该图标,选择“以管理员运行”命令,打开命令行窗口。在命令行中,执行以下命令:bcdedit /set hypervisorlaunchtype off 重启后,就可以正常启用x86的Android模拟器了...阅读全文

Android按键字符映射文件

按键字符映射文件(.kcm 文件)负责将 Android 按键代码与修饰符的组合映射到Unicode字符。 如果只是告诉系统该设备仅用于特殊用途(非全键盘),那么对于具有按键的所有内部(内置)输入设备,特定于设备的按键布局文件必不可少。 对于外部键盘,特定于设备的按键布局文件为可选项,并且通常根本不需要。系统会提供适用于许多外部键盘的通用按键字符映射。 如果没有提供特定于设备的按键布局文件,系统将选择默认按键布局文件。 位置: 按键字符映射文件可以通过USB供应商、产品ID或输入设备名称进行定位。 按上述顺序查阅以下路径: /system/usr/keychars/Vendor_XXXX_Product_XXXX_Version_XXXX.kcm /system/usr/keychars/V...阅读全文

博文 2018-01-06 16:02:38 幸福阶梯

Kotlin教程学习-函数定义,变量声明

可以看到,函数定义就是 <访问控制符> <函数名> <参数列表> <:返回类型(不写就是无返回类型)> { 函数体 } 单语句函数可以简写,比如add函数和add1函数效果是一样的 变量定义 var <标识符> : <类型> = <初始化值> 常量定义 val <标识符> : <类型> = <初始化值> 常量与变量都可以没有初始化值,但是在引用前必须初始化 编译器支持自动类型判断,即声明时可以不指定类型,由编译器判断 运行结果...阅读全文

博文 2017-05-23 11:43:47 天命剑主

Kotlin学习(四)——包、修饰符

一、包 1.包的定义 我们都知道Java中,包是用关键字package定义,同样的在Kotlin中,也是用package关键字定义 例如: /* * *Demo类的全名是 com.hello.kotlin.Demo,这里跟java中的书写没有任何区别 * */ package com.hello.kotlin class Demo{ } Kotlin和Java中包定义的区别 #Java:包名的和路径必须保持一致,如上面Demo类所在包名为:com.hello.kotlin.Demo,那么项目工程中与之对应的包所在路径也必须是: com ---hello --------kotlin 这点我们应该是没有任何质疑的,但在Kotlin中却并没有这样的限制 Kotlin:允许包名和路径不同,也就是说...阅读全文

博文 2017-05-29 02:02:05 _陈小平

《Kotlin 程序设计》第七章 Kotlin 进阶之编译过程分析

第七章 Kotlin 进阶之编译过程分析 http://mp.weixin.qq.com/s/lEFRH523W7aNWUO1QE6ULQ 我们知道,Kotlin基于Java虚拟机(JVM),通过Kotlin编译器生成的JVM字节码与Java编译的字节码基本相同,也因此与Java可以完全兼容,并且语法更加简洁,让我对Kotlin的编译过程甚是好奇。一通Google之后,毫无收获,Kotlin作为一门新语言,绝大多数的资料都局限于它的用法和特性相关。幸好Kotlin所有源码都已开源,遂决定生啃之。Kotlin源码传送门:https://github.com/JetBrains/kotlin在具体讲Kotlin编译过程之前,我们先来看一张图。 上图是Java编译器的编译过程,正如它们俩完全兼容的...阅读全文

博文 2017-05-29 04:02:06 华夏商周秦汉唐宋元明清中华民国

Kotlin学历之可见性修饰符

简述与java中的修饰符相比,Kotlin中多了一个叫internal,翻译过来是形容词内部,内置的意思。具体为什么会多一个,请看下期!开个玩笑啊- -,还有三个就跟java的用法基本类似了,但也会不同,下面一一讲解。internal 最关心的放最前面哈,大家肯定在思考,为什么会多这么一个修饰符,意思在哪?仔细回顾了一下之前的东西,突然明白了,在Kotlin中是可以有包级属性的,而java包下面只能是类或者接口等,Kotlin就可以很随意,定义变量、定义类、定义接口、定义函数都可以,具体可以看下面的图,编译器是通过的,再想想protected修饰符,它是内部类或者子类可以访问的修饰符,在Kotlin中就因为有了包级的属性,所以才多了个internal修饰符,为了区别于protected,被i...阅读全文

博文 2017-06-14 10:03:09 Pape

Kotlin.3 - 属性和函数

注:当前文档为Kotlin自学总结,若什么地方含义模糊不清,敬请指教,谢谢:-)。 目录与关键词: - 属性 - Getter & Setter 幕后字段field - 分类 - 幕后属性 - 不符合幕后字段要求的 - 编译期常量(const) - 顶层,对象表达式/对象声明中,没有setter,可用于注解 - 扩展属性 - 指定类型调用,伴生对象亦可. - 延迟属性(lateinit) - var,无自定义访问器,非空且不能为原生类型 - 覆盖属性(open → override) - 委托属性(链接:https://www.kotlincn.net/docs/reference/delegated-properties.html#委托属性) - 内联属性 - 函数/方法 - 普通函数 -...阅读全文

博文 2017-07-03 18:04:01 SchafferWang

Kotlin学习笔记(三十三)拓展方法

/** * 拓展方法 * 1.拓展方法可以在直接不改变原类的的基础上,给该类添加原本没有的方法 * 2.拓展属性可以给类添加原本没有的属性,但由于没有filed幕后字段,不能直接使用=赋值, * 只能使用getter和setter,而filed不起效,所以setter没啥用 */ fun String.multiply(count: Int): String { //拓展方法 val stringBuilder = StringBuilder() for (i in 0 until count) { stringBuilder.append(this) //此处的this代表字符串本身 } return stringBuilder.toString() } operator fun Stri...阅读全文

博文 2017-07-14 11:03:54 lkmc2

Kotlin进阶之函数(Functions)

函数声明(Function Declarations) 在Kotlin中,函数的声明使用fun关键字: fun double(x: Int): Int { } 函数用法(Function Usage) 使用传统的方法调用函数: val result = double(2) 使用.操作符调用成员函数: Simple().foo() //创建累的实例并调用foo()方法 中缀符号(Infix notation) 当满足下列条件的时候,函数还可以使用中缀符号调用: 当函数是成员函数或者扩展函数的时候 当他们仅有一个参数的时候 当他们通过infix关键字标记的时候 如: // 为Int定义扩展函数 infix fun Int.shl(x:Int):Int{ ... } //使用中缀符号调用扩展函数 ...阅读全文

博文 2017-05-31 10:02:43 樹學

Koltin——最详细的可见性修饰符详解

在Kotlin中,不管是类,对象,接口,构造函数,函数,属性及其设置器都具有可见性修饰符。Kotlin中的可见性修饰符共四种。即public、protected、private、internal。在不同的场景声明不同的修饰符都有不同的可见性。下面详解介绍不同的修饰符在不同场景的范围。 这里值得注意的是,属性的Getter()函数的可见性具有与属性相同的可见性。 目录 一、 四种修饰符的说明 public修饰符表示 公有 。此修饰符的范围最大。当不声明任何修饰符时,系统会默认使用此修饰符。 internal修饰符表示 模块 。对于模块的范围在下面会说明。 protected修饰符表示 私有+子类。值得注意的是,此修饰符不能用于顶层声明,在下面可以看到。 private修饰符表示 私有 。此修饰...阅读全文

博文 2017-12-13 15:00:01 Jetictors

PHP程序员7小时学会Kotlin 第二小时

Kotlin中,一切皆对象;PHP则并非一切皆对象,甚至不需要对象的存在即可完成系统功能开发,我们现在可以接触到的旧的系统都可以说明这一点。 基本数据类型 数值型 类型 位长 双精度浮点型Double 64 浮点型Float 32 长整型Long 64 整型Int 32 短整型Short 16 字节Byte 8 字面常量 十进制数 123 123L 十六进制数 0x0F 二进制数 0b00001011 双精度浮点数 123.5, 123.5e10 浮点数 123.5f 表示 Java平台上,数值型物理上存储为JVM的基础类型,除非我们需要可为空的数值引用或者涉及泛型时; 显式转换 运算符 字符型 布尔型 数组 字符串 字符型字面量 字符串模板 包管理 流程控制、返回与跳...阅读全文

博文 2017-05-23 11:43:35 JawJimmy

Android开发,Kotlin的了解与学习(四)-----基本语法的使用

本章主要了解kotlin中基本语法的使用 定义一个方法 方法的定义,在前面几章里面已经提到了一点,这里仔细了解一下 var a: Int = 0 fun getNum(num: Int): Int { return a } fun setNum(num: Int) { a = num }上面的方法相当于下面 int a = 0; public int getNum(){ return a; } public void setNum(int num){ a = num; } 现在主要来找不同,首先是fun,关于可见性修饰符 public private protect等我们待会再说 来看set方法,kotlin的参数名在数据类型之前,这个之前提到过,这是很容易搞错的一点,从 int num到现...阅读全文

博文 2017-06-21 13:01:02 Stanny_Bing

Kotlin.2 - 类的结构与分类

注:当前文档为Kotlin自学总结,若什么地方含义模糊不清,敬请指教,谢谢:-)。接上篇 Kotlin.1 - 包,数据类型,普通类和接口 目录和关键词: - 类结构 - 类的分类 1. 数据类(data) 及解构声明 - 注重参数,函数自动生成和复制 2. 密封类(sealed) - 文件限制和When分支覆盖 3. 内部类(inner),匿名内部类,嵌套类 - 引用 4. 枚举类(enum) - 当前类对象,常量获取,排序 类的结构 类可以包括: 初始化块 注意: 初始化代码块中可以使用主构造的参数; 构造函数 属性 函数 嵌套类和内部类 对象表达式 对象声明 类的模拟结构如下: [open/abstract] class <类名> [<访问修饰符>] [<注解>] [construct...阅读全文

博文 2017-06-23 11:03:48 SchafferWang

(新) Kotlin搞起来 —— 4.类与对象

标签: Kotlin 1.Any类 我们都知道Java中每个类都有一个Object的默认父类,在Kotlin中也有,但是不是Object,而是 Any 类,虽说都是所有类的共同父类,但是类组成却是不一样的,对比下就知道了: 2.类定义与对象实例化 Kotlin中不同于Java,允许在一个文件中定义多个类,另外,类实体是可选的,就是直接class Test 这样,对的不用疑惑,可以不写大括号,当然这个一般用于表示概念(没什么卵用)。而实例化类对象以及调用成员方法也很简单: 这里设置对象的属性Name,其实是调用了自动生成的setName()方法,对了,你还可以自定义属性的getter和setter方法,做一些过滤或者一些附加操作,例如: 然后这里有个坑,就是如果你写成get() = trueH...阅读全文

博文 2017-07-27 16:03:45 coder_pig

Kotlin学习集合

学习01 飞机票 内容: kotlin的入口函数 解释main函数 kotlin中的;(分号) Java的基本数据类型与Kotlin类型对应 可变变量和不可变变量修饰符 定义局部变量 kotlin中类型分为nullable和non-nullable 判空和安全调用 学习02 飞机票 内容: Java中的数组和Kotlin中的Array[out T] 变型 协变 逆变 泛型是不变的 pecs口诀 学习03 飞机票 内容: 包类直接声明 可见度修饰符 函数返回值 函数参数:默认参数,指定参数,变长参数 扩展函数 学习04 飞机票 内容: 局部函数 函数类型 高阶函数 标签 有标签return 和无标签return inline函数 noinline 学习05 飞机票 内容: 各种各样的类的声明 ...阅读全文

博文 2017-05-30 22:02:08 咸鱼佬

从零开始的Kotlin之类和对象(二)

从零开始系列: 从零开始的Kotlin之类和对象(一) 从零开始的Kotlin之类和对象(二) 属性(Property)和域(Field) Kotlin中声明一个属性可以使用val或var关键字。var表示为可变属性,val表示为只读属性。 class Test { val x = 0; var y = 1.0f } 自定义的 Getter && Setter var name: String get() = name set(value) { "The name is $name" } 编译期常数值 如果属性值载编译期间就能确定,则可以使用const修饰符,将属性标记为编译器常数值,这类属性必须满足以下所有条件: 必须是顶级属性,或者是一个object的成员 值被初始化为String类型,...阅读全文

Kotlin学习06

属性 顶级属性 我们可以直接在包内直接声明对象,属性,函数,接口,类。在包内直接声明的就是就是顶级属性 var property01: String = "" get() = field set(value) { field = value } val property02 get() = 12 var/val 修饰 , 属性类型,初始器,setter/getter都是可选的可见度默认为public,可在任何地方访问到着两个属性 属性的后端域变量backing fields field就是属性的后端域变量,只存在于setter和getter方法中。其实就是属性的一份copy,因为kotlin是不支持域变量的,所以当你在setter/getter中直接访问属性的话,其实就是一直在递归 var ...阅读全文

博文 2017-06-01 00:02:17 咸鱼佬