mvc 做网站,怎么提高网站速度,百度竞价推广价格,淘宝视频怎么下载目录
1. 变量声明方式不同
2. 方法(函数)定义略有不同
3. 逻辑控制关键字 if 的使用区别
4. 继承的区别
5. 接口和实现的区别
6. Koltin 的数据类有什么用#xff1f; 1. 变量声明方式不同
Koltin声明变量的方式与Java类似#xff0c;但是顺序不太一样。
举例如下
J…目录
1. 变量声明方式不同
2. 方法(函数)定义略有不同
3. 逻辑控制关键字 if 的使用区别
4. 继承的区别
5. 接口和实现的区别
6. Koltin 的数据类有什么用 1. 变量声明方式不同
Koltin声明变量的方式与Java类似但是顺序不太一样。
举例如下
Java声明一个不可变Stringfinal String name
Java声明一个可变StringString name
总结就是 变量修饰符(可选) 变量类型 变量名
Koltin声明一个不可变Stringval name String
Koltin声明一个可变Stringvar name String
补充说明:val(value的简写)声明一个变量不可变与Java中的final修饰类似
var(variable的简写)声明一个变量可变即不被final修饰
总结就是 变量修饰符(可选) 变量名 变量类型
也可以看出Java与Koltin声明变量最大的区别就是变量名和变量类型顺序换了一下 2. 方法(函数)定义略有不同
Java中的方法定义方式
方法修饰符 方法返回值 方法名(参数1类型 参数1名称参数2类型 参数2名称......){方法体}
Koltin 中方法定义方式
fun(固定位funfunction的缩写) 方法名 (参数1名称 参数1类型参数2名称 参数2类型......)方法返回值类型{方法体} 3. 逻辑控制关键字 if 的使用区别
Koltin语言中 if 关键字比Java语言中多了一个功能它可以有返回值很好理解举例如下
// fun定义一个方法名为largeNumber方法返回较大的一个数
// 参数分别为 Int 类型的num1和Int类型的num2方法返回值类型也为Int
fun largerNumber(num1: Int, num2: Int): Int {
// if 可以有返回值返回较大的一个数定义一个val不可变参数value接收val value if (num1 num2) {num1} else {num2}
// 返回参数 valuereturn value
}4. 继承的区别
Java中继承使用关键字 extend只要一个类没有被 final 修饰默认就是可以被继承的。
继承方式为 子类 extend 父类
// 定义父类Person人
public class Person{
}
// 定义Student学生类继承Person人类
public class Student extend Person{
}
Koltin中继承关键字要使用 open只有被open关键字修饰的类可以被继承继承格式为
子类父类()
举例如下:
// 定义Father父类切被open修饰
open class Father {
}
// 父类Father被open修饰子类Son可以继承Father
// 继承格式为 子类父类()
class Son : Father(){
} 5. 接口和实现的区别
Java中接口关键字为 interfaceKoltin中接口关键字也为interface
Java的接口实现比较简单这里就不举例说明了Koltin接口实现的方式如下图
// 使用 interface 定义一个接口
interface Person {// 定义两个变量 name 和 age但是一般很少在接口中定义变量只会定义接口方法
// 这里我只是举例说明var name: Stringvar age: Int// 定义一个sayHell()接口方法该方法无返回值fun sayHello()// 定义一个有返回值的接口方法largeNumber方法返回值为Intfun largeNumber(num1: Int, num2: Int): Int
}// 子类Student实现重写父接口Person中定义的方法
class Student : Person {
// override 重写父类中定义的name和ageoverride var name: String Tomoverride var age: Int 18// override重写sayHello() 方法override fun sayHello() {println($name is $age years old, say hello)}// override 重写largeNumberoverride fun largeNumber(num1: Int, num2: Int): Int{val value if (num1 num2) {num1} else {num2}return value}
}6. Koltin 的数据类有什么用
Koltin 中的数据类非常类似于Java中的JavaBean但是比JavaBean要简化的多它只需要在类的前面定义一个 data即可标记该类为数据类如下代码所示
data class 类名(var param1:数据类型,var param2:数据类型,......
){// 没有结构体的时候该大括号可以省略}
当我们声明了一个数据类之后编译器会帮我们做以下几件事
1生成equals()函数与hasCode()函数
2生成toString()函数由类名参数1 值1参数2 值2....构成
3由所定义的属性自动生成component1()、component2()、...、componentN()函数其对应于属性的声明顺序
4copy()函数
这里主要说一下componentN() 和 copy() 函数很简单它其实就是Java中的 get方法set 方法。
下面我用代码来举例说明
Java代码定义一个User类并定义name和pwd两个属性如下所示
// 定义一个 User 用户类并定义 name 和age 两个变量
public class User {private String name;private String pwd;// 添加无参构造器public User(){}// 添加全参构造器public User(String name, String pwd) {this.name name;this.pwd pwd;}// 生成每个属性变量的getter和setter方法public String getName() {return name;}public void setName(String name) {this.name name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd pwd;}// 生成toString方法Overridepublic String toString() {return User{ name name \ , pwd pwd \ };}
}
可以看到JavaBean代码的实体类代码量很大显得很臃肿也许有些同学会说我可以在类上标记DataGatterSetter注解省很多事情。
也许你很急但别急我们看一下Koltin语言实现同样的效果有多简单
Koltin 定义User用户类并定义name和age两个属性
data class User(val name : String, val pwd : String)
OK一行代码搞定是不是很简单
然后我们在来说刚才的 componentN() 和 copy() 函数怎么用
copy函数举例
// 定义
val user1 User(kotlin,123456)
println(user1)// 使用copy函数修改name属性的值
val newUser1 user1.copy(name new Kotlin)
println(newUser1)
copy函数类似Java的setter方法括号内要对当前对象哪个属性做修改直接写 属性名 要修改的值 即可。
componentN() 函数举例
val user1 User(kotlin,123456)
println(user1.component1());
println(user1.component2());控制台输出结果为
koltin
123456
简单来说Kotlin中定义一个数据类则系统会默认自动根据参数的个数生成component1() ... componentN()函数。
componentN()函数就是用于解构声明的现在我们的数据了共定义了name和pwd两个属性.
对应着函数component1()获取到的就是第一个属性name
函数component2()获取到的就是第二个属性pwd