本文只记录重要的或者与C/C++、Java 出入较大的内容
// 声明一个延迟初始化的字符串数组变量
private val mTitles : Array<String> by lazy {
arrayOf(
ctx.getString(R.string.tab_title_android),
ctx.getString(R.string.tab_title_ios),
ctx.getString(R.string.tab_title_h5)
)
}
// 声明一个延迟初始化的字符串
private val mStr : String by lazy{
"我是延迟初始化字符串变量"
}
// 1. 顶层声明
const val NUM_A : String = "顶层声明"
// 2. 在object修饰的类中
object TestConst{
const val NUM_B = "object修饰的类中"
}
// 3. 伴生对象中
class TestClass{
companion object {
const val NUM_C = "伴生对象中声明"
}
}
fun main(args: Array<String>) {
println("NUM_A => $NUM_A")
println("NUM_B => ${TestConst.NUM_B}")
println("NUM_C => ${TestClass.NUM_C}")
}常量声明的三种正确方式
var num16 = 0x0F
var num2 = 0b11110001
var num10 = 123
var oneMillion = 1_000_000
println("var oneMillion = 1_000_000 => var oneMillion = $oneMillion")
var operaNum = 2
var shlnum = operaNum shl(2)
var shrnum = operaNum shr(2)
var ushrnum = operaNum ushr(2)
println(" shlOperaNum => $shlnum \n" +
" shrOperaNum => $shrnum \n" +
" ushrOperaNum => $ushrnum \n " )
Kotlin
中对于按位操作,和Java是有很大的差别的。Kotlin
中没有特殊的字符,但是只能命名为可以以中缀形式调用的函数,下列是按位操作的完整列表(仅适用于整形(Int
)和长整形(Long
)):
shl(bits)
=> 有符号向左移 (类似Java
的<<
)shr(bits)
=> 有符号向右移 (类似Java
的>>
)ushr(bits)
=> 无符号向右移 (类似Java
的>>>
)and(bits)
=> 位运算符and
(同Java
中的按位与)or(bits)
=> 位运算符or
(同Java
中的按位或)xor(bits)
=> 位运算符xor
(同Java
中的按位异或)inv()
=> 位运算符 按位取反 (同Java
中的按位取反)
arrayOf()
, arrayOfNulls()
, Array()
, 原始类型数组