我喜欢java!长度
因此,我最近在Coursera上完成了一门名为“面向Java开发人员的Kotlin”的课程,因此我觉得我是最热门的问题之一“ Kotlin或Java”的合适人选。
如今,很难找到一个从未听说过Kotlin的Java开发人员,这也是因为Kotlin得到了Google的大力支持。
Kotlin有许多优点,仅举几例-
1.与JAVA相比,KOTLIN SYNTAX的精确度更高
更少的代码行,相同的含义,易于重构,易于调试,但是所有这些都以更多的编译时间为代价。 这是一个例子:
2. Kotlin处理长期处理NULL的问题。
在包括Java在内的许多编程语言中,最常见的陷阱之一是访问空引用的成员将导致空引用异常。 在Java中,这相当于NullPointerException或NPE的简称。
Kotlin的类型系统旨在从我们的代码中消除NullPointerException。 NPE的唯一可能原因可能是:
显式调用以引发NullPointerException()
的用法!
关于初始化的一些数据不一致
在Kotlin中,类型系统区分可保存null的引用(可为空的引用)和不可保存的引用(非null引用)。 例如,字符串类型的常规变量不能为null:
var a: String = "abc" // Regular initialization means non-null by default
a = null // compilation error
要允许空值,我们可以将变量声明为可空字符串,写成String ?:
var b: String? = "abc" // can be set null
b = null // ok
print(b)
Kotlin中还有其他处理null的方法,例如-
检查条件是否为空
首先,您可以显式检查b是否为null,并分别处理两个选项:
val l = if (b != null ) b.length else - 1
编译器跟踪有关您执行的检查的信息,并允许在if中调用length。 还支持更复杂的条件:
val b: String? = "Kotlin"
if (b != null && b.length > 0 ) {
print( "String of length ${b.length} " )
} else {
print( "Empty string" )
}
安全通话
您的第二个选择是安全呼叫接线员,写为?。:
val a = "Kotlin"
val b: String? = null
println(b?.length)
println(a?.length) // Unnecessary safe call
如果b不为null,则返回b.length,否则返回null。 此表达式的类型为Int?。
猫王算子
当我们有一个可为空的引用b时,我们可以说“如果b不为null,则使用它,否则使用一些非null值”:
val l: Int = if (b != null ) b.length else - 1
除了完整的if-expression外,还可以使用Elvis运算符 (?::
val l = b?.length ?: - 1
如果?:左侧的表达式不为null,则elvis运算符将其返回,否则将其返回右侧。 注意,仅当左侧为null时,才评估右侧表达式。
我还要提及的另一个重要功能是-
Kotlin标准库既是Java标准库的集合,也是它自己的个人扩展
这意味着您可以使用Java的内置库标准以及其他Kotlin自己的库。
在Kotlin进行至少一个月的编码之后,我感到这种语言的易用性使其难以理解。
设计编程语言时要考虑的最重要的事情应该是人类阅读和编写该语言的自然程度,而且我相信Java创造者在这里做得非常好。
另一方面,即使在如今,使用Kotlin我也很难阅读代码。 这远非直观。
我更喜欢Java而不是Kotlin的其他原因是-
默认情况下,类不是最终的
除非另有明确说明,否则每个类都应该能够继承。
public class Dog {
}
public class Pomerania extends Dog {
}
这是OOP! 不仅接口和抽象类被设计为可扩展的,而且我们的许多设计模板都依赖于继承。
Kotlin没有。 我们被迫使用open关键字来明确地告诉我们,我们希望能够扩展将为其创建子级的每个非抽象类。
类型的注释
这是经典的:类型变量=值; 。 它的读音几乎就像是英语,并且从很早以前就出现在这里,这是有原因的。 对于函数/方法,它也可以完美地工作:键入function(){}。
Kotlin开发人员决定在这里做什么? 完全相反,可以追溯到Pascal时间并将类型放在var / val变量的右侧:Type = value。
没有隐式可执行代码
在Java中,我们可以完全控制应用程序的代码,我们可以依靠这样的事实,即编译器永远不会发疯并为我们生成代码。 这使我们可以为任何类型的调试保持信任的断点。
如果您非常疯狂地使用数据类,那么Kotlin旨在生成主要的构造函数,所有字段的getter / setters甚至等于hashCode和toString。
大量的实践和编码也将使您对此有所帮助,但是就我的喜好或兴趣而言,无论是因为我使用该语言所使用的命令还是我更习惯其语法,我还是会更喜欢JAVA。
我喜欢java!长度