Kotlin基础语法(一)
·
//单行注释
/*
多行注释,注释可以嵌套
//嵌套
*/
/**
* var声明变量
* val声明常量(不可变,java中的final)
* var/val 变量名:类型 = 初始值
*/
var bianl: Int = 123//变量
val bianll: String = "string"//常量
//基本数据类型:Double 64 Float 32 Long 64 Int 32 Short 16 Byte 8
//字符:Char 必须用单引号'包含起来
var charTest: Char = 'a'
//数组
/**
* 数组:创建数组两种方法
* 1,使用arrayOf()函数
* 2,使用工厂函数
* 除了Array还有ByteArray, ShortArray, IntArray
*/
fun arrayTest() {
val a = arrayOf(1, 2, 3)//[1,2,3]
val b = Array(3, { i -> (i * 2) })//[0,2,4]
}
//String:不可变的 """支持多行字符串(保持原有格式输出)
// 可以调用.trimMargin()删除多余的空白,默认使用|作为边界前缀,可以传入其他字符(删除边界前缀空白[行开始是空白有效])
var tString: String = """jjjj
》jjjjjj
》jjjjj
"""
/**
* 字符串模板
* $表示一个变量
* $varName 表示变量值
* ${varName.fun()} 表示变量方法的返回值
*/
fun stringBan() {
var a = 1
val s1 = "a is $a"
a = 2
println("${s1.replace("is", "was")},but now is $a")
//输出:a was 1,but now is 2
}
//类型后面加?表示可为空
var age: String? = "123"
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回null
val ages1 = age?.toInt()
//age为空返回-1 ?: 判空处理
val ages2 = age?.toInt() ?: -1
/**
* fun + 函数名(参数:类型):返回类型{}
* 1,返回类型可以不指定,返回类型自动推断
* 2,无返回类型可以用Unit或者直接不屑
*/
fun sum(a: Int, b: Int): Int {
return a + b
}
/**
* 可变长参数函数,参数类型使用vararg标识
* 调用:vars(1,2,3,6)
*/
fun vars(vararg v: Int) {
for (vt in v) {
println(vt)
}
}
/**
* lambda匿名函数
*/
val sumLambda: (Int, Int) -> Int = { x, y -> x + y }
/**
* 类型检测及自动类型转换
* 使用is运算符检测表达式是否某类型的实例
*/
fun getStringLength(obj: Any): Int? {
if (obj is String) {
//类型判断之后,obj自动转为String类型
return obj.length
}
//这里obj仍然是Any类型
return null
}
/**
* 区间
*/
fun inTest() {
for (i in 1..4 step 1) {
println(i)//输出1234 步长用step
}
for (i in 4..1) {
println(i)//什么都不输出
}
for (i in 4 downTo 1 step 1) {
println(i)//输出4321
}
for (i in 1 until 10) {
println(i)//使用until函数排除结束元素 i in [1,10)
}
}
/**
* 比较两个数字:===表示比较对象地址,==表示比较两个值大小
*/
fun equasTest() {
val a: Int = 10000
println(a === a)//true 值相等,对象地址相等
val boxedA: Int? = a
val boxedB: Int? = a
println(boxedA === boxedB)//false 值相等,对象地址不一样
println(boxedA == boxedB)//true 值相等
}
/**
* 类型转换
* 较小类型并不是较大类型的子类,较小类型不能隐式转换为较大类型
* 有些情况下也是可以使用自动转换,前提:可根据上下文推断出正确数据类型而且数字操作符会做相应的重载
*/
fun typeToChange() {
val b: Byte = 1//OK,字面值静态检测
//val i: Int = b //错误
val i: Int = b.toInt()//OK
val l = 1L + 3//Long + Int => Long
}
更多推荐
所有评论(0)