Kotlin学习笔记(二):Kotlin与Java对比
来源:互联网 发布:淘宝网上卖什么东西销量好 编辑:程序博客网 时间:2024/06/05 09:51
本篇文章我们将通过类比Java语法的方式学习Kotlin的基本语法和常用操作
基本类型
注: char在Kotlin不是基本数据类型,是独立的数据类型
String字符串表示
- Java
String name = "Java";String sex = "Man";String link = "name is :" + name + ",sex is:" + sex;
- Kotlin
字符串可以包含模板表达式,即可求值的代码片段,并将其结果连接到字符串中。一个模板表达式由一个 $ 开始并包含另一个简单的名称
val name = "Kotlin"val sex = "man"val link = "name is $name,sex is: $sex"
打印操作
- Java
System.out.print("Java");System.out.println("Java");
- Kotlin
print("Kotlin")println("Kotlin")
换行操作
- Java
String text = "第一行\n第二行\n第三行\n";
- Kotlin
有两种类型的字符串字面量:
- 一种是可以带分割符的。跟Java一样
- 一种是不可以包含分割符但可以包含其它字符。 由三个引号包裹(“”“)
val text1 = "第一行\n第二行\n第三行\n";val text = """|第一行|第二行|第三行""".trimMargin() //去除空格
常量和变量定义
- Java
final String s = "Java";String name = "Java";int num = 5;
- Kotlin
var 声明变量
val 声明常量
val s = "Java"var name = "Kotlin"var num = 5
声明静态常量、方法
- Java
static final String NAME = "name";static final int SEX = 0;static void Test() { }
- Kotlin
声明静态常量或者方法时,都是使用如下方式声明
companion object { internal val NAME = "name" internal val SEX = 0 fun Test() { }}
条件表达式
if语句
- Java
if( a == b){}if( a>=0 && a <=10){}if( a>0 && a <10){}
- Kotlin
if( a== b){}if( a in 0..10){} // 也可以按照Java写法 if( a>=0 && a <=10){}if(a in 1 until 10) //也可以按照Java写法 if( a>0 && a <10){}
参考Ranges使用
三元运算符
- Java
int num = a > b ? a :b;
- Kotlin
val num = if (a > b) a else b
case表达
- Java
String s;switch(a){ case 0: s = "a = 0"; break; case 1: s = "a = 1"; break; default: s = "default"; break;}
- Kotlin
val s = when(a){ 0 -> "a = 0" 1 -> "a = 1" else -> "default"}
for循环迭代操作
- Java
for(int i = 0; i <= 10; i++){}for(int i = 0; i < 10; i++){}for(int i = 10; i < 0; i--){}for(int i = 0; i <= 10 ; i+=2){}for(int i = 10; i < 0; i-=2){}for (String s : listString) {}for (Map.Entry<String, String> entry: map.entrySet()) {}
- Kotlin
在下面使用的操作使用倒了Kotlin自带的Ranges使用
- in 指定范围
- until 不包含
- downto 倒序
- step 指定步数跳跃
for(i in 0.. 10){}for(i in 0 until 10){}for(i in 10 downTo 0){}for(i in 0.. 10 step 2){}for(i in 10 downTo 0 step 2){}for(item in listString){}for ((key, value) in map) { }
参考Ranges使用
集合操作
- Java
List<String> listString = Arrays.asList("a","b","c");listString.add("d");Map<String,String> map = new HashMap<>();map.put("a","1");map.put("b","2");map.put("c","3");
- Kotlin
var listString = listOf("a","b","c")listString.add("d")var map = mapOf("a" to "1", "b" to "2", "c" to "3")
遍历集合和筛选操作
- Java
for (String s : listString){ System.out.println(s);}//筛选for (String s: listString){ if(s.equals("a")){ System.out.println(s); }}
- Kotlin
listString.forEach { println(it)}//筛选listString.filter{ it.equals ("a") } .forEach{ println(it) }
声明方法
不带返回值方法
- Java
void Test(){ }void Test(int a, String b){ }
- Kotlin
fun Test(){}fun Test(a : Int, b : String) { }
带返回值方法
- Java
int Test() { return 0;}int Test(int a, int b){ if(a > b){ return a; } return b;}
- Kotlin
fun Test() :Int { return 0}fun Test(a :Int, b :Int) :Int{ if( a > b ){ } return b}
构造方法
- Java
class Test{ public Test(){ } public Test(int a, int b){ }}
- Kotlin
class Test { constructor() {} constructor(a: Int, b: Int) {}}
或者这样写
class Test constructor(){ //constructor 可省略 constructor(a: Int, b: Int) : this() {}}
生成get跟set方法
- Java
class Test{ String a; int b; public Test(String a, int b){ this.a = a; this.b = b; } public String getA() { return a; } public void setA(String a) { this.a = a; } public int getB() { return b; } public void setB(int b) { this.b = b; }}
- Kotlin
只需一行代码
data class Test(val a: String, val b: Int){ }
看完上面的文章,我们可以发现Kotlin语法比Java更加的直观和便捷,但是还是需要一段时间来适应Kotlin的语法习惯。
阅读全文
0 0
- Kotlin学习笔记(二):Kotlin与Java对比
- Kotlin笔记(二) : Kotlin与Java对比
- Kotlin学习笔记——与java对比
- Java to Kotlin(java 与 Kotlin对比)
- kotlin学习笔记(二)
- kotlin学习笔记(二)
- Kotlin学习笔记(二)
- kotlin学习笔记(二)
- Kotlin学习笔记(二)---从零学习Kotlin
- Kotlin escape与Java对比
- Kotlin笔记二(Kotlin基础)
- Kotlin开发语言学习(3)Kotlin与Java混编
- kotlin学习(二)
- Kotlin学习(二)
- Kotlin学习笔记(二)循环,跳转
- Kotlin学习笔记(二)基本数据类型
- Kotlin学习(二)Hello Kotlin
- Kotlin学习笔记二(数据类型)
- kafka-整体架构
- iOS中计算缓存文件的大小判断
- MongoDB学习笔记
- (53)用在宏上的#符号
- 用xampp在本地建立的wordpress网站修改数据库密码后无法登陆
- Kotlin学习笔记(二):Kotlin与Java对比
- C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar如何使用
- Android 保持屏幕常亮的几种方法
- 数据库事务
- JDK
- 树的子结构
- Hibernate框架(1)
- Intent组件--属性说明
- Linux下C线程池的实现