mac在eclipse中的快捷键
1.格式化代码:command+shift+f
2.提示代码: option+/
前言:内容来源
视频第三节-搭建环境
- Eclipse下载地址:点我访问
- JDK下载:Eclispe自带
- 在Eclipse中添加Kotlin插件,如图
视频第四节-编写Hello world
代码如下:(注意在Eclipse创建Kotlin文件时,选择创建一个Kotlin File,而不是Kotlin Class)
视频第七节-变量
- Var 用来定义变量,可以修改
- Varl用来定义常量,不可修改
截止视频第27节,所敲代码如下
import java.util.TreeMap
import java.lang.Exception
import java.math.BigDecimal
val pi = 3.1415f
fun main(args: Array<String>) {
println("hello world")
var a: Int = 0b11//0b表示二进制
println("a==" + a)
var b: Boolean = true
println("" + b)
println("sayHello==" + sayHello("Hello"))
println(changeContent("博物馆"))
var c = 8
var d = 1
println("比较${c}和${d}的最大值为:${checkBig(c, d)}")//"${}"代表字符串模版,占位符,有时候可以简写为$
var e = "Tom"
var f = "tom"
println(e == f)//Kotlin中的“==”和“equals”用法一样,比较的是内容是否一致,java中的“==”则比较的是字符串的地址值
println(e.equals(f))
println(e.equals(f, true))//true代表不区分大小写
println(checkEmpty("水"))
println(checkEmpty(null))//当我们把参数传为null值时,必须在方法上的参数数据类型后面加上“?”,代表参数可以为空,不然直接编译报错
println(getGrade(100))
println(compareGrade(100))//when和switch都可以用于int型变量的判断,但when更强大,它可以是变量,常量,返回数值的表达式以及返回Boolean值的表达式
var g = 1..100// ".."代表1从100的区间,包含1和100
var g1 = 0;
for (gg in g) {// for in 代表循环1到100这个区间
print("$gg,")
g1 = gg + g1;//计算1到100的总和
}
println("")
println("1到100的总和为:" + g1)
var g2 = 1 until 10//until 表示[1,10)区间,前开后闭
for (gg in g2) {
print("" + gg + ",")
}
println("")
for (gg in g2 step 3) {//step代表每次间隔3个数字
print("" + gg + ",")
}
println("")
var g3 = g2.reversed()//把g2的1-9数字排练改为倒叙排列9-1,并且赋值给g3
for (gg in g3) {//step代表每次间隔3个数字
print("" + gg + ",")
}
println("")
println("1-9总共有${g3.count()}个数字")
// var list = ArrayList<String>()
// list.add("1")
// list.add("2")
// list.add("3")
var list = listOf("1", "2", "3")//有以上两种List集合的写法
for (l in list) {
print("" + l + ",")
}
println("")
for ((i, e) in list.withIndex()) {//表示根据下标获取集合内容
println("下标为:" + i + " 对应的内容为:" + e)
}
var map = TreeMap<String, String>()//创建map集合使用TreeMap
map["name"] = "ls"
println(map["name"])
var h = 3
var i = 9
// var hi = lamda(h,i)//函数方法体的写法
// println(""+hi)
// var hi = {h:Int,i:Int ->h+i}//函数表达式的写法一
var hi: (Int, Int) -> Int = { h, i -> h + i }//函数表达式的写法二
println(hi(h, i))
println(getLength(pi, 5.0f))//默认传参
println(getLength(cicle = 5.0f))//具名传参
var j = "66"
var k = 66
j = k.toString()//把Int转为String 使用 toString
k = j.toInt()//把String转为Int 使用 toInt
// var m = "请输入第一个数字:"
// println(m)
// var mm = readLine()//获取到输入的内容
// var n = "请输入第二个数字:"
// println(n)
// var nn = readLine()
/**
? 的用法:
1.用来定义变量时,指这个变量可以为null
2.用来调用变量时,指这个变量如果为null 就会不执行这段代码,变量直接等于null
!! 的用法:
1.它指这个变量若是为null,程序会显示报错信息
参考网址:https://www.jianshu.com/p/51b2e5aa3dd8Ï
**/
// try {//捕获异常
// var mmInt = mm!!.toInt()
// var nnInt = nn!!.toInt()
// println("输入总和为:" + (mmInt + nnInt))
// } catch (e: Exception) {
// println("输入有误,请输入正确的输数字")
// }
var o = BigDecimal("4")//计算递归 4*3*2*1 4的递归就是4*3的递归 依次类推...
//println("result==" + getRepeat(o))//递归写法
println("result==" + getRepeat(o, BigDecimal.ONE))//尾递归写法
}
/**
递归写法1
这样的写法如果递归的数值过大,就会导致栈内存溢出,这时就需要尾递归写法
**/
//fun getRepeat(num:BigDecimal):BigDecimal{
// if(num == BigDecimal.ONE){
// return BigDecimal.ONE
// }else{
// return num+getRepeat(num-BigDecimal.ONE)
// }
//}
/**
递归写法2-尾递归写法
1.添加tailrec关键字
2.添加结果参数result
3.修改运算函数
**/
tailrec fun getRepeat(num: BigDecimal, result: BigDecimal): BigDecimal {
println("现在计算的数字为:"+num+" 该数字计算的结果为:"+result)
if (num == BigDecimal.ONE) {
return result
} else {
return getRepeat(num - BigDecimal.ONE, num * result)
}
}
fun getLength(p: Float = pi, cicle: Float): Float {
return 2 * p * cicle
}
/**
函数的写法1
fun lamda(h:Int,i:Int):Int{
return h+i
}
**/
/**
函数的写法2
1,去除{}
2, 去除 return,改为 =
**/
fun lamda(h: Int, i: Int): Int = h + i
fun sayHello(name: String): String {
return name;
}
fun changeContent(place: String): String {
return "今天去${place}玩了${place.length}小时,我很高兴";
}
fun checkBig(a: Int, b: Int): Int {
if (a > b) return a else return b
}
fun checkEmpty(a: String?): String {
return "热" + a
}
fun getGrade(a: Int): String {
when (a) {
100 -> return "满分"
90 -> return "优秀"
60 -> return "及格"
else -> return "再接再厉"
}
}
fun compareGrade(a: Int): String {
when {
a == 100 -> return "满分"
a > 90 && a < 100 -> return "优秀"
a > 60 && a < 90 -> return "及格"
else -> return "再接再厉"
}
}