按照惯性 先来一波基础中的基础 :
1.变量和常量:
* 变量的申明 主要有两种 var 和val 请注意最后一个字母
* var :声明 可变 变 量,默认为private。 帮助记忆: variable 可变的
* val :声明 只读 变 量 ,默认为private。
* 一个是可变 一个是只读 只读 只能赋值一次 这个尤其重要。
eg:
// 如果赋了初始值值,可以省略数据类型
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关键字 那我想用咋办 ,这不出来了一个const关键字儿,咋用?
val MainStartActivity = "/main/StartActivity"
这只是一个对象,而如果我们想在其他的类里边使用,而又不想实例化这个类,我们就会想到静态变量了,但是 Kotlin 取消了 static 关键字,我们又该怎么写呢?代码如下:
const val MainStartActivity = "/main/StartActivity"
使用如下:
var path = MainStartActivity
之所以不是类名.对象,因为Kotlin 已经自动完成了导包。
下面再来两个栗子🌰:
val MainStartActivity = "/main/StartActivity"
//对应的 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"
//对应的 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中修饰可见性一共四个关键字:
public:默认修饰符,全局可见。
private:作用域仅为当前所在源文件。val常量和var变量,默认都是private的。
internal:作用域为当前模块。同一模块都可见。
protected:作用域为当前所在类以及其子类
3.数据类型数字
Kotlin 提供了如下的内置类型来表示数字(与 Java 很相近)。
Type Bit width
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8
这里要说明一下,Kotlin 处理数字在某种程度上接近 Java,但是并不完全相同。如不支持数字隐式拓宽转换,即自动向上转型(如 Java 中 int 可以隐式转换为long)。字符
字符用 Char 类型表示。它们不能直接当作数字.字符字面值用单引号括起来: ‘1’。 特殊字符可以用反斜杠转义。 支持这几个转义序列:\t、 \b、\n、\r、\’、\”、\ 与 $。 编码其他字符要用 Unicode 转义序列语法:’\uFF00’。布尔
布尔用 Boolean 类型表示,它有两个值:true 与 false。这个和Java是一样的。数组
数组在 Kotlin 中使用 Array 类来表示,它定义了 get 与 set 函数(按照运算符重载约定这会转变为 [])以及 size 属性,以及一些其他有用的成员函数
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