一、程序入口
/**
* Kotlin主程序入口
* 面向?qū)ο缶幊? */
fun main(args:Array<String>){
var kotlin = Kotlin("name");
kotlin.Hello();
//extend
var son = Son();
son.say();
//abstract
var man = Man("wjx");
man.say();
//interface
var wjx = Wjx;
wjx.handsome();
//被wjx代理
var aaa = AAA();
aaa.handsome();
//enum
var e =Enum.SATURDAY;
println(e.ordinal);
//sealed
var luo =horse.luo();
//is 關(guān)鍵字
if(luo is horse.luo){
luo.say();
}
//抽象是本質(zhì)狈惫,接口是能力
}
class Kotlin(var name:String){
var n=name;
fun Hello(){
println("Hello Kotlin");
}
}
二睛蛛、抽象
abstract class Human(var str:String) {
abstract fun say();
}
class Man(str:String) : Human(str) {
override fun say() {
println("${str} Man");
}
}
三、基礎(chǔ)
fun main(args: Array<String>) {
var a = "13";
var b = 13;
//字符串轉(zhuǎn)數(shù)字
a.toInt();
println("a="+a);
//數(shù)字轉(zhuǎn)字符串
b.toString();
println("b="+b);
//注意胧谈,字母和數(shù)字混合轉(zhuǎn)換會(huì)異常
var c ="a3";
c.toInt();
println("c="+c);
}
fun fact(i:Int):Int{
if(i==1){
return 1;
}else{
return i* fact(i - 1);
}
}
- 尾遞歸優(yōu)化(tailrec關(guān)鍵字)
tailrec fun sum(i:Int,result:Int):Int{
if(i==1){
return 1;
}else{
return sum(i - 1, result + i);
}
}
//帶返回值
fun first(a: Int, b: Int): Int {
return a + b;
}
//不帶返回值
fun second(a: Int, b: Int): Unit {
//支持EL表達(dá)式
println("${a}和$忆肾是整數(shù)");
}
//當(dāng)方法體代碼只有一行,可簡(jiǎn)寫(xiě)
fun third(a: Int, b: Int): Int = a + b;
//String的比較
fun string(s1: String, s2: String) {
//與Java相同
println(s1.equals(s2))
//第二個(gè)參數(shù)表示是否忽略大小寫(xiě)
s1.equals(s2, true);
//與Java不同,Java比較的是兩個(gè)數(shù)的內(nèi)存地址
println(s1 == s2)
}
//空值處理,菱肖?號(hào)代表參數(shù)可為空,否則不為空
fun Null(str: String?) {
println(str);
}
//默認(rèn)參數(shù)(a)與具名參數(shù)(b客冈,具體在main)
fun Name(a: Int = 1, b: Int) {
println("${a},$")
}
fun main(args: Array<String>) {
second(1, 2);
//函數(shù)表達(dá)式,接收兩個(gè)參數(shù)稳强,返回相加結(jié)果
var i = { a: Int, b: Int -> a + b }
println(i);
var j: (Int, Int) -> Int = { x, y -> x + y }
println(j);
//具名參數(shù)
Name(b = 2);
}
//List
fun list(){
var lists = listOf<String>("apple","peach","watermenlon");
for((i,e) in lists.withIndex()){
print("${i},${e}");
}
println();
}
//Map
fun map(){
var maps =TreeMap<String,String>();
maps["好"]="good";
maps["學(xué)"]="study";
println(maps["好"]);
}
fun main(args: Array<String>) {
var num1Str = readLine();
//!!代表不可為空
var num1 =num1Str!!.toInt();
var num2Str = readLine();
var num2 =num2Str!!.toInt();
println("${num1}+${num2}=${num1.plus(num2)}");
}
//推斷為Int
var i =18;
//推斷為L(zhǎng)ong
var j=99999999999;
//推斷為String
var s="hello"
/**
* Var變量不賦值時(shí)场仲,需要聲明變量類型
*/
fun main(args: Array<String>) {
var c:Int
//數(shù)據(jù)類型的取值范圍,其余同理
val aByte:Byte= Byte.MAX_VALUE;
val bByte:Byte= Byte.MIN_VALUE;
println("max:"+aByte);
println("min:"+bByte);
}
fun main(args: Array<String>) {
//變量的聲明與使用
var name:String="張三";
println(name);
name="李四";
println(name);
//常量的聲明與使用
val pass:String;
pass="pass";
println(pass);
}
//When關(guān)鍵字用法
fun When(score:Int){
when(score){
10 -> println("10分");
9 -> println("9分");
8 -> println("8分");
else -> println("繼續(xù)加油");
}
}
//區(qū)間和遍歷的表示
fun sum(){
//數(shù)組【1退疫,100】
var nums=1 .. 100;
var result = 0;
//遍歷
for(num in nums){
result+=num;
}
println("結(jié)果是:"+result);
}
fun sum2(){
//數(shù)組【1渠缕,100)
var nums=1 until 100;
var result = 0;
//遍歷
for(num in nums){
result+=num;
}
println("結(jié)果是:"+result);
}
//step用法
fun sum3(){
var nums= 1 .. 16;
for(num in nums step 2){
print("${num}"+" ");
}
println();
}
//reversed用法
fun sum4(){
var nums =1..16;
var nums2=nums.reversed();
for(num in nums2){
print("${num}"+" ");
}
println();
}
四、枚舉
enum class Enum {
MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY
}
五褒繁、繼承
//open關(guān)鍵字褐健,可被繼承
open class Father {
private var age:Int=50;
//open,允許被覆蓋
open fun say(){
println("Father");
}
}
: 代表 extends 澜汤,() 代表 constructer(構(gòu)造方法)
class Son : Father(){
override fun say() {
println("Son");
}
}
六蚜迅、接口
//接口
interface IMan {
fun handsome();
}
//by 接口代理關(guān)鍵字, Wjx 代理 AAA
class AAA :IMan by Wjx {
}
//object 單例關(guān)鍵字
object Wjx : IMan {
override fun handsome() {
println("wjx is handsome");
}
}
七俊抵、印章
/**
* 印章/密封類
* 沒(méi)有構(gòu)造方法
* 限定子類構(gòu)造(luo 谁不、lv)
*/
sealed class horse {
fun say() {
println("hello");
}
class luo : horse() {
//horse子類
}
class lv : horse() {
//horse子類
}
}