本文已收录《Java常见面试题》:https://gitee.com/mydb/interview 方法重载是指在同一个类中,定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载...doSomething } public void method(Integer id, String name) { // doSomething } } 为什么不同返回类型不算方法重载...从方法签名的组成规则我们可以看出,方法的返回类型不是方法签名的组成部分,所以当同一个类中出现了多个方法名和参数相同,但返回值类型不同的方法时,JVM 就没办法通过方法签名来判断到底要调用哪个方法了,如下图所示...: 那为什么返回类型不能做为方法签名的一部分呢?...总结 在同一个类中定义了多个同名方法,但每个方法的参数类型或者是参数个数不同就是方法重载。方法重载的典型使用场景是 String 中的 valueOf 方法,它有 9 种实现。
一、keyframes的使用方法 keyframes是css3实现动画的一种方式。...二、keyframes在不同浏览器中的表现性 IE 9以下不支持 IE10支持文字和样式动画,但不支持图片帧动画 Firefox支持文字和样式动画,不支持图片帧动画 Chrome支持各种形式的动画 下面我写了一段代码来测试...keyframes在不同浏览器中的表现性 index.html <!...中,仙鹤和小球均无动画效果 ?...在IE10中,仙鹤无动画效果,小球运动 ? 在Firefox中,仙鹤无动画效果,小球运动 ? 在Chrome中,仙鹤和小球均有运动效果,keyframes只在chrome中表现良好 ? 在线演示
在 C# 中,有不同类型的变量(用不同的关键字定义),例如: int - 存储整数(没有小数点的整数),如 123 或 -123 double - 存储浮点数,有小数点,如 19.99 或 -19.99...5.99D; char myLetter = 'D'; bool myBool = true; string myText = "Hello"; C# 常量 如果您不希望其他人(或自己)覆盖现有值,可以在变量类型前添加...从上面的示例中,您可以预期: x 存储值 5 y 存储值 6 然后我们使用 WriteLine() 方法来显示 x + y 的值,即 11 C# 多个变量 声明多个变量: 要声明同一类型的多个变量,请使用逗号分隔的列表...= 50; Console.WriteLine(x + y + z); 在第一个示例中,我们声明了三个 int 类型的变量(x、y 和 z),并为它们赋了不同的值。...在第二个示例中,我们声明了三个 int 类型的变量,然后将它们都赋予了相同的值 50。 C# 标识符 所有的 C# 变量都必须使用唯一的名称来标识。 这些唯一的名称被称为标识符。
造成混乱的另一个原因是主要的 构造函数:构造函数声明中的“ val”或“ var” 如果函数声明,则与同一事物有所不同 (即,它创建一个属性)。...其实不难看到,对于局部变量作为参数传递到方法,Java 和 Kotlin 的输出结果都是一样的,不同的是 Java 允许修改局部变量,而 Kotlin 不可以。...最后我们再看一下 Kotlin 的局部变量在匿名内部类中的表现如何。...Kotlin 和 Java 的表现是一样的,值会同步,但是和 Java 不同的是在匿名内部类中 Kotlin 支持对局部变量重新赋值并且属性会同步到外部,这是因为 Kotlin 支持闭包,那么闭包到底是什么呢...语言,为什么 Java 不支持 Kotlin 却支持呢,其实把代码编译后可以发现 Kotlin 是把变量作为一个对象的属性来处理了,这样来达到修改的目的。
Kotlin的编译器kompiler可以被独立出来并嵌入到 Maven、Ant 或 Gradle 工具链中。这使得在 IDE 中开发的代码能够利用已有的机制来构建,可以在新环境中自由使用。...1.2 语言特性 人们为什么喜欢Kotlin?Kotlin为什么值得我们去学习?...Kotlin 的类型中,函数类型(function type)也是一等类型( first class type),在Kotlin中我们可以把函数当成值进行传递。...这就是汇编语言,这可以算作是编程语言过程中的第一次抽象封装。也许,汇编语言的主要意义不在于它与机器语言之间并不显著的差别,而是这样一个关键的想法:程序完全可以在不同的层次上编制!...一个更好的办法就是采用单例对象,单例对象在大多数情况下表现都跟静态对象差不多,只不过也可以像一个对象一样被传递而已。Kotlin中提供了 object 单例对象。 4.泛型。
由于最近在客户项目上有机会使用了Kotlin这门今年大热的语言,所以在好几个不同的场合都被要求做一些Kotlin相关的分享,在这个过程中被问到的最多的一个问题便是——我们为什么要尝试Kotlin?...从实际项目来看,Kotlin的简洁在代码量上表现的非常明显,一个提供了24个API的Spring Boot微服务,通过Kotlin编写的代码量在8000行左右(含测试代码)。...下面也是一个来自官网的样例,Kotlin在类型检查得到true后,自动完成了Any到Invoice类型的转换: fun calculateTotal(obj: Any) { if (obj is...使用Kotlin来扩展 你还可以使用Kotlin来丰富项目中所用到的Library,使用Kotlin Extensions来在不需要继承的情况下完成对原有类型的扩展。...虽然在雷达的描述中,我们更关注的是Kotlin在Android Native领域的影响力,但是随着Spring社区对Kotlin的支持和更过成功项目的出现,相信Kotlin会继续向雷达的圆心迈进。
Kotlin 就没有给你这种选择:每个属性和局部变量都需要定义为 val 或 var。另外,不能重新给方法参数赋值。 Java 中的 var 关键字完全不同。首先,它只能用于局部变量。...是否使用这些库是可选择的,而在 Kotlin 中,每种类型要么为空,要么为非空。...然而,语言设计者热衷于保持向后兼容性:Java 5 的字节码需要与 Java 5 之前的字节码完美地交互。这就是为什么泛型类型没有被写入生成的字节码中:这就是所谓的类型擦除。...与之相反的是具体化的泛型,也就是说,泛型类型将被写入字节码中。 编译时泛型类型存在一些问题。...我只在必要的时候使用 Java,因为 Kotlin 已经成为我的 JVM 首选语言。
当然我也顺势而为发布了一篇的文章《为什么我要改用Kotlin 》,着实狠狠地蹭了一波热度(尽管这样会被鄙视)。...本文尝试从一个客观全面一点儿的角度来看待这件事情,尽力为大家提供一个比较理性的观点供参考。 为什么会选用Kotlin 关于 Google 为什么会选择 Kotlin,我认为有两方面的原因。...在移动开发中,相比iOS程序员,Android程序员总是很幸运,因为我们有很多优秀好用的工具(Android Studio等),选用Kotlin,则是Google 为开发者提供高效的开发工具的一贯作风。...1.简洁,Kotlin的代码确实比Java更加简洁,比如类型推断,省去结尾的分号等等,然而这远不能成为我们改用Kotlin的原因。 2.安全,这是Kotlin的一个很重要的特性。...这种可为空的类型,使用Kotlin之后,我们程序的空指针会得到明显的改善。 3.实用,高效率。
和 Eclipse 不同,IDEA 一出生就充满了贵族的气息……嗯,主要是贵,一年差不多一千多人民币,还不打折。 这么贵会有人买吗?有啊,还年年买,因为在程序员的世界里,我们认为,贵就是好。...Kotlin 命名 为什么这门语言叫 Kotlin 呢?和 Java(爪哇岛)有啥关系么?...简明和表现力强的代码,与 Java 的完全兼容和平滑的学习曲线足以让程序员选择 Kotlin 在服务器端编程。...4、类型推导,和 Swift 一样,Kotlin 的编译器可以根据变量在上下文的环境中推导出它的数据类型,而不是强制声明。...关于 Kotlin,我也在学习过程中,未来还会写一些学习笔记,希望大家喜欢。
第3名 Kotlin语言 排名第3的是Kotlin语言,也是由谷歌主导推出的一种安卓开发语言。近年来其受欢迎度快速上升。 Kotlin是一种适用于Android开发的静态类型编程语言。...作为一种相对较新的语言,它在复杂应用程序开发中表现出色,并且可以轻松地与Java平滑交互。除此之外,它还提供了更好、更简洁和可读性更强的代码。 作为一门新兴语言,Kotlin在许多方面都有着过人之处。...此外,在处理空安全性时,Kotlin还表现出色。与其他语言相比,在保持代码精简和错误自由方面提供了更好的解决方案。 总而言之,Kotlin是一个非常值得探索和使用的编程语言。...这使得它在各种场景下都能够发挥出色的表现。 其次,Python作为一种跨平台的语言,在不同操作系统上都能够运行,并且可以与其他流行的编程语言进行无缝集成。...那么,为什么说Typescript会很受欢迎呢?首先,它能够解决JavaScript在类型检查和代码提示方面存在的问题,从而减少了代码错误率。
Kotlin 扩展函数 与 JS 的 prototype Kotlin 扩展函数 Kotlin的扩展函数功能使得我们可以为现有的类添加新的函数,实现某一具体功能 。...扩展函数是静态解析的,并未对原类添加函数或属性,对类本身没有任何影响。 扩展属性允许定义在类或者kotlin文件中,不允许定义在函数中。...lambda是要作为参数被传入某方法或赋值给某变量的匿名方法的简化表现形式。...为什么要使用扩展(动机): 在Java中,有很多工具类如java.util.Collections,使用很繁琐: // Java Collections.swap(list, Collections.binarySearch...扩展函数是静态解析分发的,不是虚函数(即没有多态),调用只取决于对象的声明类型! 1.调用是由对象声明类型决定,而不是由对象实际类型决定!
DSL 与 编程语言区别 : ① 使用者不同 : DSL 是特定领域的专家使用 , 编程语言是程序员使用 ; ② 作用范围不同 : DSL 仅能表示特定领域的事物模型 , 编程语言可以表现任何事物和模型...Kotlin 中的 DSL : DSL 是 Kotlin 语言的特性之一 , 使用 DSL 可以让函数调用非常接近真实的语言 ; 6 ....Kotlin 函数扩展 ---- 1 . 函数扩展作用 : Kotlin 中的函数 / 属性 扩展 , 可以为任意定义好的类 , 扩展任意函数或属性 ; 2 ....表示该参数不能为 空 ; ⑥ 方法体 : 在方法体中调用传入的函数类型 , 获取元素中符合 selector(T) 调用返回值 最大值的元素 ; /** * Returns the first element...Kotlin 属性扩展 ---- 1 . 属性扩展作用 : Kotlin 中的函数 / 属性 扩展 , 可以为任意定义好的类 , 扩展任意函数或属性 ; 2 .
Types,在 Kotlin 中,这种灵活类型被俗称为平台类型)的形式给出了解决方案。...v=2IhT8HACc2E 为什么在 Kotlin 之前没人这么做呢?因为在此之前,没有人试图将空安全集成到语言的类型系统中,同时以如此大的规模维护安全性和互操作性。...在 Kotlin 中,对函数 listOf(1) 的调用会推断出 List 的结果类型,因为参数的类型给出了类型的提示。...在这项工作中,我们遇到了几十种极端情况,即根据一组一致的规则从头开始编写的编译器在一些实际代码中开始表现出不同的行为。...在旧版本的编译器和 IDE 中实现警告和自动代码修复的情况是存在的,这样受该更改影响的开发人员将会有足够的时间在新版本编译器发布之前提前替换代码(新版本编译器会对这段代码进行不同的处理。)
比较对象的引用是否相等 ( === ) Kotlin 中的操作符 === 用于比较对象的引用是否指向同一个对象,运行时如果是基本数据类型 === 等价于 ==。...但是 equals 比较特殊, 对于浮点类型 Float 和 Double 却有不同的表现,代码如下所示。...,其实现方法 equals 不遵循 IEEE 754 浮点运算标准 : NaN 被认为和它自身相等 NaN 被认为比包括正无穷在内的任何其他元素都大 -0.0 小于 +0.0 因此在 Kotlin 中如果使用...数据类 最后我们在来看一下这三种操作符在数据类中的表现。...比较对象的引用是否相等 ( === ) Kotlin 中的操作符 === 用于比较对象的引用是否指向同一个对象,运行时如果是基本数据类型 === 等价于 ==。
Kotlin,从知识的半衰期来看,这门语言非常值得学习,不过想要普及还是非常难,因为Kotlin还没有表现出非用它不可的竞争力,另外很多企业使用的成本比较高,大多数领导都是不求有功但求无过,不会下力气推广...为什么要学习kotlin?...Java 重载,在 Kotlin 中怎么巧妙过渡一下? Kotlin 中的判空姿势 Kotlin 复写 Java 父类中的方法 Kotlin “狠”起来,连TODO 都不放过!...is、as` 中的坑 Kotlin 中的 Property 的理解 also 关键字 takeIf 关键字 单例模式的写法 image.png 第三章 项目实战《Kotlin Jetpack 实战》 从一个膜拜大神的...为什么要引入 Lambda 和 高阶函数? 带接收者(Receiver)的函数类型:A.
这么说可能有些抽象,接下来还是做个实验,看看它们的显示效果到底有什么不同。...Kotlin代码如下,根据不同的按钮分别设置不同方向上的margin和padding数值: //该页面用于演示margin和padding的区别 class LinearLayoutActivity :...Kotlin使用关键字as进行变量的类型转换; 3....在代码中指定参照物及其所处方位,调用的是布局参数对象的addRule方法,方法格式形如“addRule(方位类型, 参照物的资源ID)”。...下面是个给相对布局添加下级视图的Kotlin代码例子: //根据参照物与方位类型添加下级视图 private fun addNewView(align: Int, referId: Int
Types,在 Kotlin 中,这种灵活类型被俗称为平台类型)的形式给出了解决方案。...相关的详细信息,请参阅 JVMLS 2015–Kotlin 中的灵活类型。 为什么在 Kotlin 之前没人这么做呢?...在 Kotlin 中,对函数 listOf(1) 的调用会推断出 List的结果类型,因为参数的类型给出了类型的提示。...在这项工作中,我们遇到了几十种极端情况,即根据一组一致的规则从头开始编写的编译器在一些实际代码中开始表现出不同的行为。...在旧版本的编译器和 IDE 中实现警告和自动代码修复的情况是存在的,这样受该更改影响的开发人员将会有足够的时间在新版本编译器发布之前提前替换代码(新版本编译器会对这段代码进行不同的处理。)
谷歌在今天的声明中写道:“Android 的开发将越来越以 Kotlin 为先。” 许多新的 Jetpack API 和特性将首先在 Kotlin 中提供。...IntelliJ 开发系统是基于 Groovy 和 Gant 的,Groovy 也用于测试,RubyMine 中还有一些 JRuby 代码,情况就是如此。我们希望转向更具表现力的语言从而提高生产力。...不同的开发人员可能有着截然不同的偏见,因此,有开发人员认为 Kotlin 是不错(或糟糕)的 Java 替代者并不意味着其他开发人员也这么认为。...但同样可以看到,Android 社区拥抱 Kotlin 的速度越来越快,也许有一天,在 Android 世界里,我们会看到 Kotlin 对 Java 的超越。 为什么谷歌会支持 Kotlin?...此后,Kotlin 也被开发者视为 Java 的替代品。 在之后的一年时间里,Google 可以说把 Kotlin 当亲儿子看待,为什么这么说呢?
前言 作为安卓开发,我们常常碰到这样的场景,需要把以dp为单位的值转化为以px为单位。...在 Android Studio 中,我们可以查看 kotlin 文件的字节码,然后再 Decompile 为 Java 代码。上面我们为 Person 扩展函数转为Java代码后如下。...因为将一个 Person 作为入参传入了方法中,所以我们也就可以在方法内对这个 Person 对象进行操作,这也就是在扩展方法中我们可以使用 this 来访问 Person 属性的原因。...扩展不能真正的修改他们所扩展的类。通过定义一个扩展,你并没有在一个类中插入新成员, 仅仅是可以通过该类型的变量用点表达式去调用这个新函数,并将自身作为参数传入。...总结 在 Java 中,我们要扩展一个类时,常常是继承该类或者用装饰者模式类似的设计模式来实现,Kotlin 扩展函数和扩展属性为这种需求提供了一种新思路,并且也可以作为 Utils 类的另外一种选择
协程的最小粒度-Coroutine 对没接触过协程的人来说,一个OOP代码的最小调度粒度是函数。在协程中,最小的调度粒度是协程,在kotlin中叫coroutine。...它负责把 DispatchedContinuation 分发到不同的调度器中去执行。...在jvm上,还多了个IO类型的默认实现。对于磁盘IO或者网络IO,一般用这个作为默认的实现。...为什么可以提升效率,在Kotlin协程-协程设计的基础中有具体解释。...而是指kotlin在支持 jvm / js/ native 三个平台上的跨平台。从它的设计上也能感受到kotlin想吊打其他语言的野心。
领取专属 10元无门槛券
手把手带您无忧上云