Kotlin入门之第 0 篇基础语法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36252044/article/details/86661872

前言

- Kotlin自从被Google定义为官方开发语言后,一直很火.那么作为Android开发人员,Kotlin还是有必要学一下的. 那么此Kotlin系列就是记录自己学习Kotlin的过程,希望与大家共勉!

- 我们学习一门语言,我认为最好的方法是从最基础的语法学起.只有知晓了基础的语法,才能去搭建更复杂层次的逻辑结构代码!
- 
- 本系列是根据官网的文档来进行的.
- 
- 本人水平有限,理解有不妥之处,希望大家多多指教,共同进步!

1.定义包

Kotlin源文件是以.kt 结尾. 文件中引用包的声明处于源文件的顶部

eg:

package lxx.demo
import java.util.*
//....

在这一点上面是和java差不多的.

2.定义函数

函数的写法不同,比如

带有两个Int参数,返回类型是Int的函数

Kotlin写法

fun sum(a: Int,b:Int): Int{
	return a + b
}

fun sum(a: Int, b: Int) = a + b

Java写法

int sum(int a, int b){
	return a + b;
}

不同

1. 修饰符不同
	(1)Kotlin方法前不加修饰符,默认就是public
	(2)Java 方法前不加修饰符,默认是default.只能被同包里的类引用,父包和子包都不行.

2. 返回值
	(1)Kotlin 中的基本数据类型都是一个对象.因为在Kotlin中,所有东西都是对象. Kotlin中数字类型表示就是 Int.
	位置是在 方法括号后面 sum(a:Int,b:Int): Int
	(2)Java 中如果要把int类型变为对象,就需要装箱.int i = 1; Integer A = new Integer(i);
	位置是在方法名前面

3. 参数顺序
	(1)Kotlin中 是方法参数在前 ,间隔一个冒号,然后参数类型在后,多个参数用 逗号 隔开.
	sum(a: Int)
	(2)Java 中 类型在前,有空格间隔,然后是参数
	sum(int a)

4. 结尾
	(1)Kotlin 中语句不需要以分号结尾
	(2)Java 中 语句必须以分号结尾

3.定义变量

定义局部变量

Kolin写法

fun main(){
	val a : Int = 1  // 立即初始化
	val b = 2		//自动推导出类型
	val c: Int		//没有初始化,必须声明类型
	c = 3
	var x = 5
	x += 1
}

Java 写法

main(){
	final int a = 1;
	int b;
	b = 1;
}

不同

 变量修饰符
 (1)Kotlin 中 用 val 修饰的变量 是不可更改的.而用 var 修饰的变量是可以修改的
 (2)Java 中 用final 修饰的变量就变成了常量,也是不可修改的,其他的都是可以修改了. Java中只有常量不可以修改.

4.注释

// 这是一个行注释

/*
这是一个多行
的块注释
*/

不同

Kotlin的块注释可以嵌套,java暂时还不可以

eg:

Kotlin 嵌套块注释

/*
	第一层块注释
	/*
		第二层块注释
		/*
			第三层块注释
		*/
	*/
*/

5.使用条件表达式

比较两个int值a,b的大小

Kotlin写法

fun maxOf(a: Int,b: Int): Int{
	if(a>b){
	   return a
	}else{
	   return b
	}
}


三元运算符写法,用if作为表达式

fun maxOf(a: Int,b: Int) = if (a>b) a else b

6.可空值 及 null 检测

当某个变量的值可以为null的时候,必须在声明处的类型后加上标识
? 来表示此类型可以为空

eg:

fun parseInt(str: String):Int?{
	....
}

把String字符串转为Int型

- 如果传入的不是数字字符串,而是"aaa"这种字符串,那么 此方法的返回值为 null. 我们就可以根据返回值是否为null,来判断传入的入参是够正确

7.类型检测及自动类型转换

is 运算符 用来检测一个表达式是否是某类型的一个实例. 如果检测后判断为该类型,那么在检测后的代码块中可以直接当该类型使用,不用显示转换.

eg:

获取字符串的长度

fun getStringLength(obj: Any):Int?{
	if(obj is String && obj.length>0){
		//在判断属于String类型后,不用显示转换成String后,直接可以使用 .length
		return obj.length
	}
	return null
}

8. for循环

for循环可以对任何提供迭代器(iterator)的对象进行迭代

Kotlin写法

fun main(){
	val items = listOf("a","b","c")
	for(item in items){
		println(item)
	}
	//也可以这样写
	for(index in items.indices){
		println(items[index])
	}
}

Java写法

String arr[] = {"a","b","c"};
for(int i = 0;i < arr.length;i++){
	prinltn(arr[i]);
}

不同

Kotlin 中用 in 代替,省略了java中一系列赋值

9. while 循环

fun main(){
	val items = listOf("a","b","c")
	var index = 0		
	while(index < items.size){
		println(items[index])
		index++
	}
}

此处与java中类似,在判断条件满足的情况下一直运行,一旦不满足就跳出逻辑

10.when 表达式

Kotlin写法

fun describe(obj: Any):String =
	when(obj){
		1			-> "One"
		"Hello"		-> "Greeting"
		is Long		-> "Long"
		!is String	-> "Not a string"
		else		-> "Unknown"
	}
  • 从上往下匹配,一旦符合条件后就会输出 -> 后面的语句, 然后跳出逻辑

Java 写法

when(x > 0){
	println("x的值大于0");
}

不同

1.入参
	(1)Kotlin中的when表达式我感觉很像java中的switch表达式. 传入一个值和代码块中的值做对比,一致的化就走对应的逻辑.
	用  "->" 符号来指定输出内容
	(2)Java 中的when 更像一个判断语句,如果符合判断条件就走代码块中的逻辑,否则就不走.

11.区间 range

使用 in 运算符来检测某个数字是否在制定区间内

eg:

val x = 10
val y = 9
if(x in 1..y+1){
	println("fits in range")
}

(1)
	1..y+1  表示全闭区间类似Java中的
	x>=1 && x<=10 [1,10]
(2)
	1 until y+1 表示左闭右开类似Java中的
	x>=1 && x<10  [1,10)

(3) downTo  表示倒序迭代

(4) step  正序就是加上后面的数字,倒序就是减去后面的数字
	eg:
		for(x in 1..10 step 3){
			print(x +",")
		}
	
	- 这里结果是 1, 1+3,1+3+3,1+3+3+3

		for(x in 10 downTo 1 step 3){
			print(x + ",")
		}

	- 这里结果是 10,10-3,10-3-3,10-3-3-3

12.集合

fun main(){
	val items = setOf("a","b","c")
	when{
		"ee" in items -> println("Not in")
		"a"  in items -> println("yeah")
	}
}

猜你喜欢

转载自blog.csdn.net/qq_36252044/article/details/86661872