前言:
运行代码使用idea与Android Studio 混合,学习过程最好从头开始敲一遍,学习是个长久的兴趣。
Idea 将Kotlin语言转化为Java 图示
Studio Kotlin转化为Java 显示
下面开始正文
1、var val const val使用
//编译时常量只能是常用的数据类型 (String,Double, Int,Float,Long,Short,Byte,Char,Boolean)
//必须在函数之外定义
const val num = 45
fun main() {
//val 可读,不可改
// var 可读,可改
//var <标记符> : <类型> = <值> var可修改
var str1: String = "fatfatWolf"
str1 = "胖胖狼"
// var 可以自动进行强转
var info = 'C' //强转成char类型
info = 'B'
var num = 1//强转成int 类型
// 不可变变量定义:val 关键字,只能赋值一次的变量(有一点点类似Java中final修饰的变量)
// val <标识符> : <类型> = <初始化值>
val info2 = "fatfatwolf" //只读类型变量
//$ 表示一个变量名或者变量值 // $str1 表示这个变量值
println("str1:$str1,info:$info,info2:$info2")
}
2、字符串模板使用
//自动换行
var string = """
AAAAAAAAAAA
BBBBBBBBBBB
CCCCCCCCCCC
DDDDDDDDDDD
""" //带有前置空格
println(string)
//自动换行
var string2 = """
AAAAAAAAAAA
BBBBBBBBBBB
CCCCCCCCCCC
DDDDDDDDDDD
""".trimIndent() //去掉前置空格
println(string2)
var string3 = """
?AAAAAAAAAAA
?BBBBBBBBBBB
?CCCCCCCCCCC
?DDDDDDDDDDD
""".trimMargin("?") //// 没空格 控制|
println(string3)
// 需求:显示 $99999.99
val price = """
${'$'}99999.99
""".trimIndent()
println(price)
3、Kotlin 的安全机制 Null的判断
fun main() {
//Kotlin 的安全机制,对可为空的参数要进行判断处理
var info : String?= null
println(info?.length) //第一种补救:? 如果info是null,就不执行 .length
println(info!!.length)//第2种补救: !! 我自己负责info 不会为null == (不管null不null必须执行) == Java
//自己做判断
if (info != null) // 第3种补救: == Java
println(info.length)
}
//方法可以返回null
// : Int? === 允许返回null
fun testMethod(name: String) : Int? {
if (name == "zs") {
return 99999
}
return null
}
4、Kotlin方法之fun的使用
//Unit == Void
fun main() : Unit {
// lamada 表达式 表示方法
// val 变量名 : (参数类型,参数类型) -> 方法返回类型 = {参数1,参数2 -> 参数间的操作}
val addMethod: (Int,Int) -> Int = {num1,num2->num1+num2}
var r = addMethod(1,2)
println(r)
}
//两数相加
//返回类型写法 默认public,先有输入,再有输出
fun add(num1:Int,num2:Int) :Int{
return num1+num2
}
//类型推倒写法,推倒为int
fun add2(num1:Int,num2: Int) = num1+num2
//类型推导写法 推导为String类型值
fun add3(num1: Int,num2: Int) = "胖胖狼"
//可变参数方法
fun letMethod(vararg num : Int){
for (i in num){
println(i)
}
}
看一下Kotlin转化为Java的基础代码
fun method(age:Int,name:String) : Int{
println("你的姓名是:$name,你的年龄是:$age")
return 200;
}
/**
* 转化为Java的代码
public static final int method(int age, String name){
String var2 = "你的姓名是:"+name+"你的年龄是:+age";
System.out.println(var2);
return 200;
}
**/
5、Kotlin函数之默认赋值
fun main(){
action01("张三",26)
action02("李四")
action03()
action03("赵六",35)
}
private fun action01(name:String,age:Int){
println("我的姓名是:$name,我的年龄是:$age")
}
private fun action02(name:String,age:Int = 17){
println("我的姓名是:$name,我的年龄是:$age")
}
private fun action03(name:String = "王五",age:Int = 30){
println("我的姓名是:$name,我的年龄是:$age")
}
可以看到Kotlin的参数是可以在方法里赋值,并且赋值后可以覆盖的
6、Kotlin函数之具名参数函数
fun main(){
LoginAction(age = 26, pwd = "123456" , username = "张三")
}
private fun LoginAction(username:String,pwd:String,age:Int){
println("username:$username,pwd:$pwd,age:$age")
}
可以看到参数不按规定的传递,输出结果:username:张三,pwd:123456,age:26
7、Kotlin range 表达式
range表达式意思是 0..10
fun main{
//range表达式
val number = 148
//range 范围 从哪里到哪里
if(number in 10..59){
println("不及格")
}else if(number in 60.. 100){
println("合格")
}else if(number !in 0..100){
println("分数有误")
}
}
8、if 与 When表达式
when 相当于Java中的Switch,比switch更强大
fun main(){
val number1: Int = 9999999
val number2: Int = 8888888
// 表达式 比 大小 最大值 无返回值
val num = if(number1>number2) print(number1) else print(number2)
//有返回值的比较大小
val max:Int = if(number1>number2) {
println(number1)
number1
} else {
println(number2)
number2
}
//when 单个输出
var number = 2;
when(number){
1-> println(1)
2-> println(2)
3-> println("今天是周三")
}
//when 区间输出
when(number){
in 1..100-> println("数值在1-100之间")
in 100..220-> println("数值在100-220之间")
else -> println("其他")
}
var result = when(number){
2-> {
println("很开心")
// 很多很多的逻辑.. 省略 200行代码
// ...
// TODO ....
"今天是星期一"
"99"
}
3 -> {
println("很开心 $number")
// 很多很多的逻辑.. 省略 200行代码
// ...
// TODO ....
"今天是星期三"
true
100
}
else->{ //必须要有
println("不符合 $number")
}
}
println(result)
}
9、代码调试TODO 使用
10、区间使用 for in downTo step until
fun main(){
// 1 到 9
for (i in 1..9){
println(i)
}
// 9到1 不输出
for (i in 9..1){
println(i)
}
// 大 到 小
for (i in 9 downTo 1){
println(i)
}
// 用区间做判断
var value = 99;
if(value in 1..100){
println("在里面")
}
// 步长指定
for (i in 1..9 step 2){
println(i)
}
// 排除 最后元素,1-9
for (i in 1 until 10){
println(i)
}
}
11、compare 比较 == equals
// TODO 比较两个值
fun main() {
//JAVA里== 比较内存地址,equals比较值
//Kotlin里 == 比较值,===比较内存地址
val name1: String = "张三"
val name2: String = "张三"
// --- 比较值本身
// == 等价 Java的equals
println(name1.equals(name2))//true
println(name1 == name2) // true
// --- 比较对象地址
val test1:Int? = 10000
val test2:Int? = 10000
println(test1 === test2) // false
}
12、Kotlin中 ``的使用
public class Apple extends Fruit {
public static void is(){
}
}
fun main() {
`12132121`("张三","123456")
//kotlin中调java代码,is in 等关键字,使用``包围即可调用,否则报错
Apple.`is`()
}
//可以加密方法使用
fun `12132121`(name:String, pwd:String){
println("模拟用户名是$name,密码是:$pwd")
}
下一篇:Kotlin学习笔记基础篇二函数详解