1,Val (來自 value)-- 不可變引用。使用val 生命變量不能在初始化之后賦值
? ? ? Var(來自 variable)--可變引用
Val message :String?
if(canPerformOperation()){
message="success"
}else{
message="Failed"
}
盡管Val 引用自身是不可變的,但是它指向的對象可能是可變的。例如
val language = arrayListOf("java")
language.add("Kotlin")
盡管var 關鍵字允許變量改變自己的值,但它的類型卻是改變不了的。例如下面這段代碼是不會編譯通過的
var answer =42
answer ="no answer"? ? 錯誤:類型不匹配
2.更簡單的字符串格式化:字符串模板
fun main( args:Array<String>){
val name = if (args.size>0) args[0] else “Kotlin”
println("Hello,$name!")
}
Kotlin 讓字符串值中引用局部變量,只需要在變量名稱前面加上$ 。 和java中的(“Hello,”+name+"!"),效率一樣,但是更緊促 。
如果在字符串中使用$字符,你可以對其進行轉義:println(“\ $x”),會打印為$x,而不是把x作為變量的引用
還可以引用更復雜的表達式,而不是僅限于簡單的變量名稱,只需要把表達式用花括號括起來:
fun main (args: Array<String>){
? ?if(args.size>0){
? ? println("Hello, ${args[0]}")
? ? ? }
}
使用${ }的語法插入args數(shù)據(jù)中第一個元素
還可以使用雙引號中直接嵌套雙引號,只要它們處在某個表達式范圍內(即花括號內)
fun main (args: Array<String>){
? ? println("Hello, ${if(args.size>0) args[0] else "some one"}")
}
3. 類和屬性
/**java */
public class Person{
private final String name;
? ? public Person(String name){
this.name =name;
? ? }
public String getName(){
return name;
? ? }
}
轉換為kotlin 的對象
class Person(val name:String)這種類通常叫做值對象。
注意從java 轉到kotlin時,public 修飾詞消失了,在kotlin中public修飾詞是默認的可見性
class Person(){
val name:String,
? ? ? ? ? ? var isMarrid:Boolean =false;
}
當你聲明屬性的時候,你就聲明了對應的訪問器(只讀屬性只有一個getter,而可寫屬性有getter 和setter兩個屬性)
/**java*/
-->> Person person = new Person("Bob",true);
-->> System.out.printlin(person.getName())
Bob
/**kotlin*/
-->>val person = Person("Bob",true)
-->> println(person.name)
Bob?
kotlin 中調用構造方法不需要關鍵字 new,但是可以直接訪問屬性
/*java 中的賦值**/
person.setMarried(false)
/*kotlin 中的賦值**/
person.isMarried =false;