Android 新語(yǔ)言Kotlin

一、程序入口

/**
 * 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();
}
  • 實(shí)現(xiàn)類
class Man(str:String) : Human(str) {

    override fun say() {
        println("${str} Man");
    }
}

三、基礎(chǔ)

  • 字符串轉(zhuǎn)Int
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);
    }
}
  • 函數(shù)
//帶返回值
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["好"]);
}
  • 鍵盤(pán)讀入
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)}");
}
  • 自動(dòng)推斷類型
//推斷為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子類
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市徽诲,隨后出現(xiàn)的幾起案子刹帕,更是在濱河造成了極大的恐慌吵血,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偷溺,死亡現(xiàn)場(chǎng)離奇詭異蹋辅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)挫掏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)侦另,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人尉共,你說(shuō)我怎么就攤上這事褒傅。” “怎么了袄友?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵殿托,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我剧蚣,道長(zhǎng)支竹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任鸠按,我火速辦了婚禮礼搁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘待诅。我一直安慰自己叹坦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布卑雁。 她就那樣靜靜地躺著募书,像睡著了一般。 火紅的嫁衣襯著肌膚如雪测蹲。 梳的紋絲不亂的頭發(fā)上莹捡,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音扣甲,去河邊找鬼篮赢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛琉挖,可吹牛的內(nèi)容都是我干的启泣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼示辈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寥茫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起矾麻,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纱耻,失蹤者是張志新(化名)和其女友劉穎芭梯,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弄喘,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡玖喘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蘑志。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片累奈。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卖漫,靈堂內(nèi)的尸體忽然破棺而出费尽,到底是詐尸還是另有隱情赠群,我是刑警寧澤羊始,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站查描,受9級(jí)特大地震影響突委,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜冬三,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一匀油、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勾笆,春花似錦敌蚜、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蒲每,卻和暖如春纷跛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背邀杏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工贫奠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人望蜡。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓唤崭,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親脖律。 傳聞我的和親對(duì)象是個(gè)殘疾皇子谢肾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容