/**
-
kotlin 类的定义:《Any》 类是所有类的父类
-
注意:kotlin基本类型是 引用数据类型 继承类Nunber类型 所以可以调用方法,访问属性。
-
类定义规则:class +类名 常用修饰符有 public,private,protected,abstract, open:这个修饰符表示该类可以派生子类,类成员可以被重写。
-
类的继承规则:class +类名 +:继承类名 ()
-
举例:如下
-
class MainActivity : AppCompatActivity() {} ➡ kotlin语言中类如果没有属性和函数 ,{}大括号可以省略不写!
-
/ class MainActivity : AppCompatActivity() { /* *
- 1。声明的val 变量不能被重新赋值 一旦赋值不可改变 相当于常量
- 举例:
-
错误事例 -
val mString="helloWorld" -
此时 mString="hello" :使用 val 修饰的变量不可变变量,不能重新赋值 - 2。声明的var 变量是可被多次赋值
- 3。声明变量的规则:val/ var +变量名+:变量类型 + =初始值
- 4。声明的变量 可以隐式指定类型 例如:var ontherString="helloWorld" 没有显示的指定类型,编译器根据赋值决定其类型。
-
- kotlin 是 null 安全语言 因此 Byte,Short, Int , Long 正常情况下不能接受null值,如果要储存null值 则应该使用
-
Byte?,Short?,Int?,Long? 类型 就可以。 - 举例:var a:Int=null 是不可以的赋值错误的。正确:var a:Int?=null 就可以。
- 原因:后缀添加上 ? 相当于原有类型进行类扩展可以支持被赋值null值,整数类型后缀? 重要的原因:不带? 会映射为java基本数据类型
- 带?会映射为java的包装类 类型 所以相同的数值加?比较结果不相等
- kotlin中 注意: "==" 表示的是equals 比较值/ "===" 表示 ==比较的是对象
- */
//显示指定数据类型 val isFlag: Boolean = false
//隐式指定 val isTag = true
val aByte:Byte=127 val bByte=-128
val aShort:Short=123
val type: Int = 2 val aInt: Int = 0xFF val maxInt: Int = Int.MAX_VALUE val minInt: Int = Int.MIN_VALUE
val aLong: Long = 1234567890001111 val anonther: Long = 124L val maxLong: Long = Long.MAX_VALUE val minLong: Long = Long.MIN_VALUE
val maxFloat: Float = Float.MAX_VALUE val minFloat: Float = -Float.MAX_VALUE
val num: Double = 12.34
val page: Float = 12.3F
val aString: String = "helloWorld" val bString: String = String(charArrayOf('h', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd')) val name = "aaa"
/**
- 基本类型转换 不可以隐式转换必须调用:toLong(),toInt() 等等方法。
*/
val mlong:Long=type.toLong() val mInt: Int=aLong.toInt()
fun getmName():String?{ return "你好" }
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) text_add.text = add(1, 3).toString() text_add.text = multiplication(2, 5).toString() text_add.text = (aString == bString).toString() text_add.text=getString("1","2","3") subtraction(2,8)
/** * * 非空判断 执行 事例 * 如果为空 执行return,不为空执行下一行语句 * */ val myName:String=getmName()?:return text_add.text=myName /** * 双!! 号 * 表示 确定不是空类型 */ text_add.text=getmName()!!.length.toString() /** * 类型转换异常问题kotlin * 判断之后不用在强制转换 * */ //第一种 var parent:Parent=Child() if(parent is Child){ text_add.text=parent.getmName() } //第二种 val mParent= Parent() // as 表示 如果类型转换失败 不可抛出异常,返回null val mChild :Child?=mParent as Child text_add.text=mChild.toString()}
/**
- 重写父类的方法
- */ override fun equals(other: Any?): Boolean { return super.equals(other)
}
/** *
-
kotlin 方法结构规则 fun +方法名+(无参/有参)+:返回值类型+{}
-
*/ //带返回值 fun add(a: Int, b: Int): Int {
return a + b } // kotlin Toast方法使用 fun subtraction(a:Int,b:Int): Toast { return Toast.makeText(this,(a-b).toString(),Toast.LENGTH_SHORT).apply { show() } }
/** *
- 求乘方法
- */ fun multiplication(a: Int, b: Int): Int { return a * b }
/** *
- kotlin 字符串模版特性
- */
fun getString(a:String,b:String,c:String): String{
return "
b+
{a+b+c}"
}
}