前言
大家好呀扳剿!上一篇中我們只涉及了少量語法知識峡扩,而在本篇文章中會更加細致和豐富一些,增加了一些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
(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更多