Java&Kotlin語法對比篇(二)|語言基礎(chǔ)知識

前言

大家好呀扳剿!上一篇中我們只涉及了少量語法知識峡扩,而在本篇文章中會更加細致和豐富一些,增加了一些Java和Kotlin中的語言基礎(chǔ)知識拖陆,讓我們一起來看看吧弛槐!

1.定義基本類型數(shù)據(jù):常量和變量
2.控制語句:
(1)分支結(jié)構(gòu):if 語句、switch 語句
(2)循環(huán)結(jié)構(gòu):for 循環(huán)依啰、while 循環(huán)乎串、do-while 循環(huán)
(3)中斷結(jié)構(gòu):break 語句、continue 語句
3.輸入輸出語句


正文

一速警、定義常量和變量

1.Java

Java數(shù)據(jù)類型

(1)常量

常量是用某些特征含義的表示符表示某些不變化的數(shù)值叹誉,它的值在運行期間不會被改變,即只能被引用闷旧,不能重新賦值

定義常量的基本格式:
final 數(shù)據(jù)類型 變量名 = 值

//例如:
 final int age = 10;
 final String name = "jack";

(2)變量

程序的基本存儲單元长豁,用于存儲需要的數(shù)據(jù)∶ψ疲可以被引用和改變匠襟。

定義變量的基本格式:
數(shù)據(jù)類型 變量名 = 值;

//例如:
int age = 10;//進行初始化
String name;//可以不進行初始化

int[] nums1 = {1,2,3,4}; //定義數(shù)組缀棍,可以不指定長度
int[] nums2 = new int[]{1,2,3,4,5}; //新建一個對象分配空間
int[] nums3 = new int[5]; //指定長度宅此,不進行初始化

2.Kotlin

定義常量和變量的基本格式:
val / var 變量名 :數(shù)據(jù)類型(開頭字母大寫)= 初始化值

val age:Int = 18 //val 聲明一個常量,賦值后不可改變
var name:String = "jack"http://var 聲明一個變量爬范,賦值后可以重復(fù)修改

val age = 18  //也可不指定類型父腕,kotlin可以進行自動類型推斷
val nums = arrayOf(1,2,3,4) //定義數(shù)組并對其初始化

二劝篷、控制語句

(一)采转、分支結(jié)構(gòu)

1.if 語句

(1)Java

if條件語句的基本格式:

if (判斷條件){ } [else { }] // [ ]中的內(nèi)容可以不加*

例如:

public boolean compare(Poker other){
  if (this.suitObj.tag > other.suitObj.tag){
    return true;
  }else {
    return false;
  }          //比較撲克牌的花色為例酿联,if條件語句可以返回所需要的類型
if (true){                          //括號內(nèi)的判斷類型可以直接是boolean型
    System.out.println("成功");
}else {
    System.out.println("失敗");     //在if語句中執(zhí)行命令
}
(2)kotlin
if (判斷條件){ } [else { }] // [ ]中的內(nèi)容可以不加*

if-esle語句格式與Java區(qū)別不大板壮,值得注意的是kotlin中可以直接返回if語句的最后一句的類型。例如:

    fun compare(other:Poker): Boolean {
        return if(this.number.tag == other.number.tag){  //直接返回if語句中最后一句的類型
            this.suit.tag > other.suit.tag
        }else this.number.tag > other.number.tag
    }

2.swith語句(Java)與 when 語句(kotlin)

(1)Java中的 switch 選擇分支語句

java中的多分支選擇結(jié)構(gòu)可以采用switch語句枝嘶,其基本結(jié)構(gòu)如下:

switch(表達式)
{
  case 值1:語句1;break;
  case 值2:語句2;break;
  case 值3:語句3;break;
  default:語句4;break;                   //注意此處沒有分號
}

switch語句中表達式里的值會依次與值1帘饶、2、3進行比較群扶,若滿足1則執(zhí)行1里的語句及刻;若語句1執(zhí)行后不寫break中斷語句,則會判斷是否滿足值2竞阐,若滿足則執(zhí)行語句2直至遇到break中斷語句跳出分支結(jié)構(gòu)或者無滿足值執(zhí)行default中的語句然后跳出缴饭。
注:default語句可有可無
例如:

int a = 1;
switch(a){
  case 1: 
    System.out.println("1");break;
  case 1:
    System.out.println("2");break;
  case 1: 
    System.out.println("3");break;
  default : 
    System.out.println("other");break;
}
(2)kotlin中的 when 選擇分支語句

kotlin中的多分支選擇結(jié)構(gòu)使用when語句,其結(jié)構(gòu)如下:

    when(表達式){
        //只要滿足一個條件直接break
        條件1 -> println("1")
        條件2 -> println("2")
        條件3 -> println("3")
        else -> println("other")
    }

kotlin的多分支結(jié)構(gòu)when語句與Java中的switch語句最大的區(qū)別除了格式上的區(qū)別外骆莹,就是kotlin中一旦滿足一個條件颗搂,執(zhí)行該條件之后的語句后直接break跳出多分支選擇結(jié)構(gòu),不會再判斷下一個條件是否滿足幕垦。
例如:

    val c = 'A'
    when(c){
        //只要滿足一個條件直接break
        'A' -> println("1")
        'B' -> println("2")
        'C' -> println("3")
        else -> println("others")
    }
    when(c){
        //多種情況 逗號隔開即可
        'A','B' -> println("AB")
        'C' -> println("C")
    }
    val score = 60
    when(score){
        !in 0..59 -> println("及格")
        else -> println("不及格")
    }
    //Any - Object
    val obj:Any ?= null
    when (obj){            //判斷obj屬于哪個類用“is 類名”
        //方法外聲明類
        is Person -> println("人類")
        is Animal -> println("禽獸")
        else -> println("不明生物")
    }

    //when的表達式直接賦值
    val result = when(c){
        'A' -> "1"
        'B' -> "2"
        'C' -> "3"
        else -> "others"
    }

    // {} 表示獨立的代碼塊
    //結(jié)果為分支最后一行的值
    val result2 = when(c){
        'A' -> {
            if (2 > 1){}
            //最后一行表示結(jié)果
            "1"
        }

        'B' -> "2"
        'C' -> "3"
        else -> "others"
    }

(二)丢氢、循環(huán)結(jié)構(gòu)

1.for 循環(huán)

(1)Java

java的for循環(huán)語句包括兩種,一種是for-i循環(huán)先改,一種是for-each遍歷循環(huán)
for-i循環(huán):

for(下標初始化 ; 判斷條件 ; 執(zhí)行條件){ }

for-each循環(huán):

for(int i:數(shù)組名){ }

直接上例子:

//for-i循環(huán)
  int[] a = {1,2,3,4,5};
  for (int i = 0;i < a.length ; i++){
    System.out.print(a[i] + " ")
    }
//for-each循環(huán)
  int[] a = {1,2,3,4,5};
  for (int i:a){
    System.out.print( i + " ") //此處直接輸出a[i]的內(nèi)容疚察,而不是輸出下標,這就是遍歷數(shù)組的好處
    }
(2)kotlin

kotlin中只有for-each循環(huán)仇奶,不提供for-i循環(huán)

    for (變量名 in 數(shù)組名/范圍){
        print(變量名)  //即可打印相應(yīng)內(nèi)容
    }

例如:

    //“某數(shù)..某數(shù)”指<=  <=
    for (i in 0..3){
        print(nums[i])
    }
    println()
    for (i in 1..6 step 2){ //step指i=i+2
        print(i)
    }
    println()

    //until 指 <=  <
    for (i in 1 until 5){
        print(i)
    }
    println()
    //相當于for-each item是隨意寫的變量名
    for (item in nums){
        print(item)
    }
    println()
    //i為item 所在的索引值
    for ((i,item) in nums.withIndex()){
        println("$i-$item")
    }

2.while 循環(huán)

(1)Java

while語句的基本格式:

while(條件) { }

例如:

int i = 0 ; 
while(i < 10){
  System.out.print(i);
  i++ ;
}
(2)kotlin

while語句的基本格式與Java基本一致:

while(條件) { }

例如:

var i = 0
while(i < 10){
  print(i)
  i++
}

3.do-while 循環(huán)

(1)Java

do-while語句是先執(zhí)行再判斷稍浆,因此至少會執(zhí)行一次do內(nèi)執(zhí)行語句的內(nèi)容
do-while語句的基本格式:

do{執(zhí)行語句} while(條件語句);

例如:

int i = 0;
do {
  System.out.println(i);
  i++;
} while (i < 3);
(2)kotlin

與Java的do-while基本一致,其格式為:

do{執(zhí)行語句} while(條件語句);

例如:

var i = 0;
do {
  print(i)
  i++
} while (i < 3)

(三)猜嘱、中斷結(jié)構(gòu)

break: 結(jié)束整個循環(huán)體或者直接跳出
continue: 結(jié)束本次的循環(huán)衅枫,調(diào)過continue后的動作,直接進行下一次循環(huán)朗伶,并未結(jié)束整個循環(huán)體

1.Java

例如:

for(int i=0; i<4; i++){
  if(i==2){
    break;
      }
    System.out.print(i);
  }

輸出結(jié)果為:01 //不打印2弦撩,直接結(jié)束整個循環(huán)
for(int i=0; i<4; i++){
  if(i==2){
    continue;
      }
    System.out.print(i);
  }

輸出結(jié)果為:013 //不打印2,跳過當次循環(huán)

2.kotlin

例如:

for(i in 0..4){
  if(i==2) break
    print(i)
  }

輸出結(jié)果為:01 //不打印2论皆,直接結(jié)束整個循環(huán)
for(i in 0..4){
  if(i==2) continue
    print(i)
  }

輸出結(jié)果為:0134 //不打印2益楼,跳過當次循環(huán)

三、輸入和輸出語句

(一)点晴、Java

1.輸入語句

//接收輸入的對象Scanner
Scanner scanner = new Scanner(System.in);
//轉(zhuǎn)化接受數(shù)據(jù)的類型
int a = scanner.nextInt(System.in);   //轉(zhuǎn)化為int型

2.輸出語句

//不換行打印
System.out.print("")
//換行打印
System.out.println("")

(二)感凤、kotlin

1.輸入語句

//接收輸入并轉(zhuǎn)換為int型
var a = readline().toInt

2.輸出語句

//不換行打印
print("")
//換行打印
println("")

四、總結(jié)

1.kotlin的語法比Java更加簡潔
2.kotlin的單個語法小點比Java更多

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粒督,一起剝皮案震驚了整個濱河市陪竿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌屠橄,老刑警劉巖族跛,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闰挡,死亡現(xiàn)場離奇詭異,居然都是意外死亡礁哄,警方通過查閱死者的電腦和手機长酗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桐绒,“玉大人夺脾,你說我怎么就攤上這事≤约蹋” “怎么了劳翰?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長馒疹。 經(jīng)常有香客問我,道長乙墙,這世上最難降的妖魔是什么颖变? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮听想,結(jié)果婚禮上腥刹,老公的妹妹穿的比我還像新娘。我一直安慰自己汉买,他們只是感情好衔峰,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛙粘,像睡著了一般垫卤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上出牧,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天穴肘,我揣著相機與錄音,去河邊找鬼舔痕。 笑死评抚,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的伯复。 我是一名探鬼主播慨代,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼啸如!你這毒婦竟也來了侍匙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤叮雳,失蹤者是張志新(化名)和其女友劉穎丈积,沒想到半個月后筐骇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡江滨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年铛纬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唬滑。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡告唆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晶密,到底是詐尸還是另有隱情擒悬,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布稻艰,位于F島的核電站懂牧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏尊勿。R本人自食惡果不足惜僧凤,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望元扔。 院中可真熱鬧躯保,春花似錦、人聲如沸澎语。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擅羞。三九已至尸变,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間减俏,已是汗流浹背振惰。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垄懂,地道東北人骑晶。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像草慧,于是被迫代替她去往敵國和親桶蛔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

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