fun main(args: Array<String>) {
val sum1 = sum(1,2,3,5,100)
println(sum1)
val a = intArrayOf(1,2,3,5,100)
println(sum(*a))
}
fun suare(r:Double):Double{
return Math.PI * r * r
}
fun sum(vararg x: Int):Int{
var total = 0
for (i in x){
total += i
}
return total
}
fun main(args: Array<String>) { }
fun test(){
val title = "kotlin教程"
val language = title.take(6)
println(language)
}
fun printArea(w:Int,b:Int){
fun area(w: Int,b: Int):Int{
return w * b
}
val area = area(w,b)
println("面积=$area")
fun area() = w * b
val area2 = area()
println("面积=$area2")
}
fun checkNumber(start: Int,end: Int){
for (number in start..end){
if (number % 3 == 0){
println("$number 被3整除")
}else if (number % 5 == 0){
println("$number 被5整除")
}else if (number % 3 ==0 && number % 5 == 0){
println("$number 既能被3整除,也能被5整除")
}else{
println(number)
}
}
fun isThrees(x:Int) = (x % 3 == 0)
fun isFives(x:Int) = (x % 5 == 0)
for (number in start..end){
if (isThrees(number)){
println("$number 被3整除")
}else if (isFives(number)){
println("$number 被5整除")
}else if (isThrees(number) && isFives(number)){
println("$number 既能被3整除,也能被5整除")
}else{
println(number)
}
}
for (number in start..end){
fun isThrees() = (number % 3 == 0)
fun isFives() = (number % 5 == 0)
if (isThrees()){
println("$number 被3整除")
}else if (isFives()){
println("$number 被5整除")
}else if (isThrees() && isFives()){
println("$number 既能被3整除,也能被5整除")
}else{
println(number)
}
}
for (number in start..end){
fun isThrees() = (number % 3 == 0)
fun isFives() = (number % 5 == 0)
when {
isThrees() -> println("$number 被3整除")
isFives() -> println("$number 被5整除")
isThrees()&&isFives() -> println("$number 既能被3整除,也能被5整除")
else -> println()
}
}
}
fun salary(k:Int){
require(k > 4000,{"最低工资不能少于4000!"})
}
fun main(args: Array<String>) {
fun fotmat(str:String,state:Boolean = false){
println(str + ":" + state)
}
fotmat(str = "hello",state = true)
val book = "基于Kotlin的Android"
println(book.regionMatches(9,"深入android",2,7,true))
book.regionMatches(thisOffset = 9,other = "深入Andorid",length = 2,otherOffset = 7,ignoreCase = true)
fun read(b:Array<Byte>,off:Int = 0,len : Int = b.size ){ }
book.endsWith(suffix = "Android",ignoreCase = true)
book.endsWith(suffix = "Android")
class User(val name:String,val isVip:Boolean,credits:Int){
constructor(name:String):this(name,false,0)
constructor(name:String,isVip:Boolean):this(name,isVip,0)
}
class User2(val name:String,val isVip:Boolean=false,credits:Int = 0)
}
fun main(args: Array<String>) {
val m = Matrix(8,8,8,8)
val n = Matrix(9,9,9,9)
val mu = m + n
val mu2 = m.plus(n)
val mm = Matrix2(8,8,8,8)
println(mm[0,0])
mm[0,0] = 5
println(m.a)
Minvalue(-300,0)
Minvalue(1,2,3)
Minvalue(5,6,7,8)
val tom = Student("Tom Green",15)
val lily = Student("Lily Smith",14)
val jerry = Student("Jerry Patrick",16)
val lucy = Student("Lucy Smith",14)
println(tom < lily)
println(lucy >= jerry)
println(jerry > lily)
println(tom <= jerry)
var counter = Counter(2)
counter = counter + 3
counter += 8
val counter2 = QuickCounter(1)
counter2 *= 10
}
class Matrix(val a:Int,val b:Int,val c:Int,val d:Int){
operator fun plus(m:Matrix):Matrix{
return Matrix(a + m.a,b + m.b,c + m.c,d+m.d)
}
}
val numbers = arrayListOf(5,6,7,8)
val a = 6 in numbersval
b = numbers.contains(3)
val c = 7 !in numbers
val d = !numbers.contains(7)
val element = numbers[1]
class Matrix2(var a:Int,var b:Int,var c:Int,var d:Int){
operator fun plus(m:Matrix2):Matrix2{
return Matrix2(a+m.a,b+m.b,c+m.c,d+m.d)
}
operator fun get(horizontal:Int,vertical:Int):Int{
val point = Pair(horizontal,vertical)
when (point) {
Pair(0,0) -> return a
Pair(0,1) -> return b
Pair(1,0) -> return c
Pair(1,1) -> return d
else -> {
return 0
}
}
}
operator fun set(horizontal: Int,vertical: Int,value:Int) {
val point = Pair(horizontal, vertical)
when (point) {
Pair(0, 0) -> this.a = value
Pair(0, 1) -> this.b = value
Pair(1, 0) -> this.c = value
Pair(1, 1) -> this.d = value
else -> {
return
}
}
}
}
object Minvalue{
operator fun invoke(a:Int,b:Int) = if (a > b) a else b
operator fun invoke(x:Int,y:Int,z:Int) = invoke(invoke(x,y),z)
operator fun invoke(h:Int,i:Int,j:Int,k:Int) = invoke(invoke(h,i), invoke(j,k))
}
class Student(val name:String,val age:Int){
operator fun compareTo(other:Student):Int{
return when{
age > other.age -> 1
age > other.age -> -1
else -> 0
}
}
}
class Counter(val a :Int){
operator fun plus(b:Int) = Counter(a + b)
}
class QuickCounter(var a:Int){
operator fun timesAssign(b:Int){
a *= b
}
}
fun main(args: Array<String>) {
3.square()
val number2 = MyNumber(8)
number2.addFactor(3)
println(number2.k)
val al = Element("铝")
al.react(Particle())
al.react(Electron())
val neon = NobleGas("氪")
neon.react(Particle())
neon.react(Electron())
val train = "北京" to "伤害"
println(train)
}
fun Int.square() = this * this
class MyNumber(var k:Int){
private fun Int.triple() = this * this * this
fun addFactor(p:Int){
k += p.triple()
}
}
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(particle: Particle):Unit{
particle.react(name)
}
}
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)
}
}
infix fun String.to(other:String):String{
return this + other
}
fun main(args: Array<String>) { }
fun fibo(total:Int):Int = when(total){
0 -> 1
1 -> 1
else -> fibo(total - 1) + fibo(total - 2)
}
fun fact(k:Int):Int{
fun factTail(m:Int,n:Int):Int{
if (m == 0) return n
else return factTail(m - 1,m * n)
}
return factTail(k,1)
}
fun fact2(k:Int):Int{
tailrec fun factTail(m:Int,n:Int):Int{
if (m == 0) return n
else return factTail(m - 1,m * n)
}
return factTail(k,1)
}
fun main(args: Array<String>) {
val task = Runnable { println("运行中") }
Thread(task).apply { setDaemon(true) }.start()
val task2 = Runnable { println("Running") }
val thread = Thread(task2)
thread.setDaemon(true)
thread.start()
fun myLet():Int{
"myLet".let {
println(it)
return 999
}
}
fun testMyWith(){
with(ArrayList<String>()){
add("test1")
add("test2")
add("test3")
println("this = " + this)
}.let { println(it) }
}
ArrayList<String>().run {
add("test1")
add("test2")
add("test3")
add("test4")
println(this.joinToString())
}
fun readStringFromURL():String = ""
val lazyString = lazy { readStringFromURL() }
val string = lazyString.value
val input = Files.newInputStream(Paths.get("input.txt"))
val byte = input.use { {input.read()} }
repeat(8,{ println("kotlin重复执行")})
fun qreaterThanZero(x:Int){
require(x > 0,{"数字必须大于0"})
println(x)
}
}
fun main(args: Array<String>) {
val array = arrayOf(1,3,5,-8)
println("${array.joinToString()}中最大的值是${array.biggest()}")
}
fun <T> outputString(a:T,b:T,c:T):String{
return "$a,$b,$c"
}
fun <T> Array<T>.biggest():T
where T : Number,
T: Comparable<T>{
var biggest = this[0]
for (i in 1..lastIndex){
val e = this[i]
if (e > biggest){
biggest = e
}
}
return biggest
}