按照慣性 先來一波基礎(chǔ)中的基礎(chǔ) :
1.變量和常量:
* 變量的申明 主要有兩種 var 和val 請注意最后一個字母
* var :聲明 可變 變 量终畅,默認(rèn)為private畅哑。 幫助記憶: variable 可變的
* val :聲明 只讀 變 量 掂僵,默認(rèn)為private喳坠。
* 一個是可變 一個是只讀 只讀 只能賦值一次 這個尤其重要。
eg:
// 如果賦了初始值值厅贪,可以省略數(shù)據(jù)類型
val a = 1.0
val b: Int = 1
var painNum = ""
val num = 23
var g = 33
g += 1
// num+=2;//會報錯山涡; 說好的只讀 只能賦值一次;
// ${a}類似于String.valueof(a)
Log.e("Xiaoya", "value num :${a}")
另外 ~~ 敲黑板~~~~ 在kotlin中取消了static關(guān)鍵字 那我想用咋辦 必怜,這不出來了一個const關(guān)鍵字兒肉拓,咋用?
val MainStartActivity = "/main/StartActivity"
這只是一個對象梳庆,而如果我們想在其他的類里邊使用暖途,而又不想實例化這個類卑惜,我們就會想到靜態(tài)變量了,但是 Kotlin 取消了 static 關(guān)鍵字驻售,我們又該怎么寫呢露久?代碼如下:
const val MainStartActivity = "/main/StartActivity"
使用如下:
var path = MainStartActivity
之所以不是類名.對象,因為Kotlin 已經(jīng)自動完成了導(dǎo)包欺栗。
下面再來兩個栗子??:
val MainStartActivity = "/main/StartActivity"
//對應(yīng)的 Java 代碼
public final class ActivityPathToolKt {
@NotNull
private static final String MainStartActivity = "/main/StartActivity";
@NotNull
public static final String getMainStartActivity() {
return MainStartActivity;
}
}
const val MainStartActivity = "/main/StartActivity"
//對應(yīng)的 Java 代碼如下:
public final class ActivityPathToolKt {
@NotNull
public static final String MainStartActivity = "/main/StartActivity";
}
另外需要注意:const只能修飾val毫痕,不能修飾var
再來個常量類的栗子??:
class Constans {
companion object {
const val LOGIN_SUC = "login_suc"
const val LOGIN_FAIL = "login_fail"
}
}
下面是使用:
Log.d("Xiaoya", LOGIN_SUC + LOGIN_FAIL)
2.Kotlin中修飾可見性一共四個關(guān)鍵字:
public:默認(rèn)修飾符,全局可見纸巷。
private:作用域僅為當(dāng)前所在源文件镇草。val常量和var變量,默認(rèn)都是private的瘤旨。
internal:作用域為當(dāng)前模塊梯啤。同一模塊都可見。
protected:作用域為當(dāng)前所在類以及其子類
3.數(shù)據(jù)類型數(shù)字
Kotlin 提供了如下的內(nèi)置類型來表示數(shù)字(與 Java 很相近)存哲。
Type Bit width
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8
這里要說明一下因宇,Kotlin 處理數(shù)字在某種程度上接近 Java,但是并不完全相同祟偷。如不支持?jǐn)?shù)字隱式拓寬轉(zhuǎn)換察滑,即自動向上轉(zhuǎn)型(如 Java 中 int 可以隱式轉(zhuǎn)換為long)。字符
字符用 Char 類型表示修肠。它們不能直接當(dāng)作數(shù)字.字符字面值用單引號括起來: ‘1’贺辰。 特殊字符可以用反斜杠轉(zhuǎn)義。 支持這幾個轉(zhuǎn)義序列:\t嵌施、 \b饲化、\n、\r吗伤、\’吃靠、\”、\ 與 $足淆。 編碼其他字符要用 Unicode 轉(zhuǎn)義序列語法:’\uFF00’巢块。布爾
布爾用 Boolean 類型表示,它有兩個值:true 與 false巧号。這個和Java是一樣的族奢。數(shù)組
數(shù)組在 Kotlin 中使用 Array 類來表示,它定義了 get 與 set 函數(shù)(按照運算符重載約定這會轉(zhuǎn)變?yōu)?[])以及 size 屬性裂逐,以及一些其他有用的成員函數(shù)
4.方法的申明歹鱼;
/**
* 普通方法 有return 第一種寫法
*/
fun add(num1: Int, num2: Int): Int {
return num1 + num2
}
/**
* 普通方法 有return 第二種寫法
*/
fun add(num1: Int, num2: Int, num3: Int): Int = num1 + num2 + num3
/**
* 普通方法 無return 第一種寫法
*/
fun printAdd(num1: Int, num2: Int): Unit {
Log.e("Xiaoya", (num1 + num2).toString())
}
/**
* 普通方法 無return 第二種寫法 Unit 可以省略
*/
fun printAdd(num1: Int, num2: Int, num3: Int) {
Log.e("Xiaoya", (num1 + num2 + num3).toString())
}
/**
* 三元表達式 可讀性強;
*/
fun max(a: Int, b: Int) = if (a > b) a else b