8个基本数据类型
var age: Int = 12
var price: Double = 45.0
var distance: Float = 1f
var flag: Boolean = true
var chhh: Char = '1'
var log: Long = 1000
var byt: Byte = 10
var shortl: Short = 45
字符串数组 INT数组
val arrayOf = arrayOf(12, 13, 13, "jijj")
val intArrayOf = intArrayOf(1, 2, 3)
for循环
val arrayOf1 = arrayOf("a", "b", "c", "d")
for (s in arrayOf1){
println("for "+s)
}
While循环
var i: Int = 0
while (i < arrayOf1.size){
val get = arrayOf1.get(i)
i++
println("while "+get)
}
集合和遍历集合
val setConllection:Set<String> = setOf<String>("java","android","C++","kotlin")
for (s in setConllection){
println(s)
}
val iterator = setConllection.iterator();
while (iterator.hasNext()){
println(iterator.next())
}
setConllection.forEach {
println(it)
}
#List
val listOf = listOf<String>("a", "b", "c")
listOf.forEach {
println(it)
}
for (s in listOf){
println(s)
}
#Set
val mutableSetOf = mutableSetOf<String>("hello,word")
mutableSetOf.add("java")
val mutableListOf = mutableListOf<String>("a2","b2","c2")
mutableListOf.add("hello")
mutableListOf.forEach {
println(it)
}
#Map
mapOf<String,String>("苹果" to "ipone8","华为" to "mate10")
val mutableMapOf = mutableMapOf<String,String>(Pair("苹果","ipone"),Pair("华为","mate10"))
var desc = ""
mutableMapOf.forEach { key, value ->desc="${desc}厂家:${key},名称:${value}\n"
println(desc)
}
#遍历
```javascript
val 一到一百 = 1..100
一到一百.forEach {
println(it)
}
val 一到一百的奇数 = 一到一百.step(2)
一到一百的奇数.forEach {
println(it)
}
val 字母 = 'a'..'z'
字母.forEach {
println(it)
}
val a是否在in中 = 'a' in 字母
print("A是否在in中 "+a是否在in中)
//倒序的方法
val 一百到一 = (1..100).reversed()
一百到一.forEach {
println(it)
}
val 倒计时 = 5.downTo(0)
倒计时.forEach {
Thread.sleep(1000)
println(it)
}
val 一百到二百 = 100..200
一百到二百.forEach {
println(it)
}
#判断
when(num){
10,11,22 -> println("是0,1,2中的一个")
12 -> println("是1")
in 100..1100 -> println("输入的数字是在1到100之间")
in arrayOf(11,12,13,41) -> println("在数组中")
is Int -> println("是int类型")
else -> println("无结果")
}
when{
num < 1000 -> println("输入的参数小于1000")
num > 10 -> println("输入的参数大于10")
else -> println("无结果")
}
#操作符
val m = Matrix(8,8,8,8)
val n = Matrix(9,9,9,9)
val mn = m + n;
println("矩阵相加的结果是:$mn")
val mn2 = m.plus(n)
println("矩阵相加的结果是:$mn2")
/*!x x.not()
-y y.unaryMinus()*/
val boo = true
boo.not();
val num = 3
num.unaryMinus()
val numbers = arrayOf(5,6,7,8)
val a = 6 !in numbers
val b = !numbers.contains(6)
val i = numbers[0]
val get = numbers.get(0)
numbers.set(0,8)
#扩展方法
/*val al = Element("铝")
al.react(Particle())
al.react(Electron())*/
//open是公开的 在新的类后面加:代表继承或实现接口 fun是方法
open class Particle()//粒子
class Electron:Particle()//电子
open class Element(val name:String){//元素
open fun Particle.react(name:String):Unit{
println("$name 与粒子发生反应")
}
open fun Electron.react(name:String):Unit{
println("$name 与电子发生反应生成同位素")
}
fun react(paricle:Particle):Unit{
paricle.react(name)
}
}
/*val neon = NobleGas("氩")
neon.react(Particle())
neon.react(Electron())*/
class NobleGas(name:String):Element(name){//惰性气体
override fun Particle.react(name:String):Unit{
println("$name 是稀有气体,不与粒子发生反应")
}
override fun Electron.react(name:String):Unit{
println("$name 是稀有气体,不与电子发生反应")
}
fun react(particle:Electron):Unit{
particle.react(name)
}
}
#中辍函数
val train = "你的家" to "我的心"
var t = "西六支".to("原东")
println(train)
println(t)
val train1 = "你" 到 "我"
println(train1)
val t1 = "心".to("里")
println(t1)
infix fun String.到(other:String):String{
return this + other
}
函数字面量
"hello"
12
2.5
println("work")
val pr = { println("hello")}
println(pr)
val primsg = {msg:String -> println(msg)}
fun primsg(msg:String){
println(msg)
}
primsg("kotlin 很有趣")
菲薄函数
fun main(args: Array<String>){
println("非薄: "+fibo(10))
}
fun fibo(total:Int):Int = when(total){
0 -> 1
1 -> -1
else -> fibo(total - 1) + fibo(total - 2)
}
//let函数
fun myLet(): Int{
"myLet".let {
println(it)
return 321
}
}
//with函数
fun myWith() {
with (ArrayList<String>()){
add("杜昌")
add("王舒蓉")
add("99")
println("this = " + this)
}.let{ println(it)}
}
//run函数
fun myRun() {
ArrayList<String>().run {
add("33333")
add("22222")
add("11111")
println(this.joinToString())
}.let { println(it) }
}
//lazy函数
@RequiresApi(Build.VERSION_CODES.O)
fun myUse() {
val input = Files.newInputStream(Paths.get("f:\\myInformation.txt"))
val byte = input.use {
input.read()
}
}
//repeat函数
fun myRepeat() {
repeat(8,{ println("执行")})
}
//require函数
fun myRequire(i: Int) {
require(i > 0 ,{"数字必须大于0"})
println(i)
}
//泛型函数
fun <T> outputString(a:T,b:T,c:T):String{
return "$a,$b,$c"
}
var 求和 = {x:Int,y:Int -> x+y}
fun gaojie(a:Int,b:Int,c:(x:Int,y:Int)-> Int){
c(a,b)
}
fun g(){
gaojie(1,2, {x:Int,y:Int -> x+y})
}
#SET()GET()方法
fun main(args:ArrayList<String>){
var p = Progeer()
println(p.fieldProp)
p.fieldProp = "耶耶耶"
println(p.fieldProp)
}
class Progeer() {
var fieldProp = ""
get() = field+"获得了"
set(value) {
field = value+"设置了";
}
}
Null值
fun main(args:ArrayList<String>){
var vaa = heat("水")
println(vaa)
var v = heat(null)
println(v)
}
//类型后面加问号可以让值为空,不加?会报错
fun heat(str:String?):String{
return "热"+str
}