当前位置: 首页 > news >正文

凤楼网站怎么做的/营销页面设计

凤楼网站怎么做的,营销页面设计,济南微信网站建设,杭州做网站下沙一、变量的定义 fun main(){// 可变变量定义 var 关键字var name : String "李国菁"// 不可变变量定义: val 关键字,只能赋值一次的变量(像Java中final修饰的变量)val age : Int 10// 下面这句就有问题,不能再次更改…

一、变量的定义

fun main(){// 可变变量定义 var 关键字var name : String = "李国菁"// 不可变变量定义: val 关键字,只能赋值一次的变量(像Java中final修饰的变量)val age : Int = 10// 下面这句就有问题,不能再次更改age的值// age = 20;println(name)// 典型的类型推到出来,其实可以不用写 : String , 如果写上的话,颜色就会变成灰色var info1 = "AAA"// 类型推到,Java中是小写的char, KT 中进行了再一次的包装,变成大写的 Charvar info2 : Char = 'C'// 静态语言 编译期就决定了info3 属于String类型,再次赋值为 int值就会报错var info3 = "李菁"
//    info3 = 4; 这句话在JavaScript 中是可以的,因为JavaScript是一种动态解释性语言
}
/*
* 怎样查看kt 对应生成的Java代码呢?
* 首先需要选中kt类,然后 Tools --> Kotlin --> Show Kotlin Bytecode
* 在出现的文件的左上边点击 Decompile
* Kotlin 会再次编译成Java
* */
class Test{// 可以修改也可以读,因为有get和Set方法var info1 : String = "A"// 只能读,只有get方法val info2 : String = "B"
}

二、函数定义

// TODO 函数 可以写在类的外面,所以称为函数
// void == : Unit
fun main(): Unit {println(add(1, 2))lenMethod(1, 2, 3, 4, 5, 6, 7);// lambda 表达式函数: 函数名字 : (然后参数类型) -> 返回值 = {形参 -> 执行代码}// 可以写在函数的里面,val addMethod: (Int, Int) -> Int = { number1, number2 -> number1 + number2 }println(addMethod(90,89))
}// 函数括号后面是,函数的返回值
fun add(number: Int, number2: Int): Int {return number + number2
}// 第二种写法,返回类型 == 类型推到Int类型
fun add2(number: Int, number2: Int) = number + number2// 第二种写法,返回类型 == 类型推到为String类型
fun add3(number: Int, number2: Int) = "AAA"// 可变参数(可变长 参数函数)
fun lenMethod(vararg value: Int) {for (i in value) {println(i)}
}

三、字符串模板

fun main(): Unit {// $ 表示一个变量名或者变量值// $varName 表示变量值// ${varName.fun()} 表示变量的方法返回值val name = "李国菁"val age = 29val sex = 'M'val info = "努力加油"println("name$name , age$age , sex$sex , info$info")// 自己不用关心 \n 换行问题,val infoMessage: String = """AAAAAAABBBBBBBCCCCCCC""" // 这种会有前置空格,println(infoMessage)val infoMessage2: String = """AAAAAAABBBBBBBCCCCCCC""".trimIndent() //加上 .trimIndent() 没有前置空格println(infoMessage2)val infoMessage3: String = """|AAAAAAA|BBBBBBB|CCCCCCC""".trimMargin("|") // 去掉空格,并且去掉 | 符号,不常用println(infoMessage3)// 需求打印 $99999.99 主要是打印特殊的关键符号 $val price : String = """${'$'}99999.99""".trimIndent()println(price)
}

四、空检查机制

fun main() {// Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,// 有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?// kt 中不被运行直接赋值为null,// 可以加上问号,赋值为null,意思是全体注意,这个info可能为null// 如果使用的话必须给出补救措施var info : String? = null;println(info?.length)// 第一种补救措施 ,如果info为null,就不执行 .length// 强制性执行,不管是不是null//println(info!!.length)// 第二种补救措施 , !! 我自己负责 info 不会为null,依然执行,有可能导致空指针异常if(info != null){println(info.length)// 第三种补救措施, 和Java一样}println(test("zs"))// ?: 如果真的为null,就输出 ?: 后面的这句话println(info?.length           ?:"你很牛逼")
}
// kt 总 Int? 允许返回null,意思是kt 中既可以返回null,又可以返回Int值,在Java中是不被允许的
fun test(name : String) : Int?{if (name == "zs"){return 111;}return null
}

五、 区间

fun main() {for (i in 1..9){// 打印 1 到 9 的区间println(i)}// 不会输出for (i in 9..1){println(i)}// 从大到小, 从 9 到 1for (i in 9 downTo 1){println(i)}// 用区间做判断val value = 98if (value in 1..100){println("value 在 1到100区间吗")}// 指定 1到 20执行过程的步长,每次跳2for (i in 1..20 step 2){println(i)}// 排除最后一个元素,执行 只到 9for (i in 1 until 10){println(i)}
}

六、数组

fun main() {// 第一种形式 arrayOf<>() 可以指定泛型的类型,也可以不指定,不指定的话就是类型推到val numbers = arrayOf(1, 2, 3, 4)// println(numbers[1])for (number in numbers) {// println(number)}// 第二种形式 20 表示大小,value 默认从 0 开始,然后打印 20 次val numbers2 = Array(20, { value: Int -> (value + 1000) })for (number in numbers2) {println(number)}
}

七、条件

fun main() {val number1: Int = 9999val number2: Int = 8888// 表达式比较 大小值val maxValue = if (number1 > number2) number1 else number2println(maxValue)val max = if (number1 > number2) {println("number1是最大的")// TODO 可以做很多事情,注意需要返回,如果不返回的话,max的值为 Unitnumber1 // 此值是返回操作} else {println("number2是最小的")// TODO 可以做很多事情number2}println(max)// 使用区间做判断val x = 80val y = 29if (x in 1..10 && y in 1..50) {println("x y 轴符合")} else {println("x y 不轴符合")}// 相当于Java的 Switchval number = 5when (number) {1 -> println("一")2 -> println("二")3 -> println("三")4 -> println("四")5 -> println("五")else -> println("其他")}// 比Switch 语法更加强大,可以进行区间判断val number3 = 237when (number3) {in 1..100 -> println("1..100")in 200..500 -> println("200..500")else -> println("其他")}// 可以返回任何类型,接受的话是通过类型推到出来的,如果有各种类型,那么推到出来的类型就是Anyval number4 = 3val result = when (number4) {1 -> {println("很开心")// 很多逻辑"今天星期一"11}2 -> {println("很开心")// 很多逻辑"今天星期二"true}3 -> {println("很开心")// 很多逻辑"今天星期三"}else -> "其他" // 必须要有else语句}println(result)when(8){1,2,3,4,5,6,7-> println("满足")else -> println("不满足")}
}

八、比较

fun main() {val name1: String? = "张三"val name2: String? = "张三"// 比较值本身println(name1.equals(name2))//true// == 等价于Java的 equals 方法,也是值得比较println(name1 == name2)//true// === 比较对象的地址,但是如果是String类型的话,还是比较的值println(name1 === name2)//trueval age1:Int? = 1000val age2:Int? = 1000println(age1 === age2)//false
}

九、循环与标签

fun main() {// 自定义标签lgj@ for (i in 1..20) {for (j in 1..20) {println("i:$i , j:$j")if (i == 5) {//break // j 给break了break@lgj // i 循环break掉了,把外面的玄幻给终止了}}}// 循环val items = listOf<String>("李四", "张三", "王五")for (item in items) {println(item)}// 默认情况下是 ititems.forEach {println(it)}// 可以修改默认的it,比如修改成aaitems.forEach { aa ->println(aa)}// 打印下标for (index in  items.indices){println("下标 $index ,对应的值 ${items[index]}")}}// 自带标签
class LGJ {val I = "AAA"fun show() {println(I)println(this.I)println(this@LGJ.I)}
}

十、类

// Person 默认不能被继承 public final class,可以加open就可以被其他类进行继承
open class Person(id: Int)  //主构造
{// 次构造,次构造必须引用主构造constructor(id: Int, name: String) : this(id){}// 次构造,重载constructor(id: Int, sex:Char,name: String) : this(id){}// 无参的次构造,也必须调用主构造constructor() : this(1){}}class Student(id: Int) //: Person()  // 继承和实现都是 : ,必须指定构造函数: Person(id)//把子类的id,传递给父类
{// 在kt中全部成员都没有默认值,必须赋初始值// 在Java中 成员有默认值,但是方法内部没有默认值// var name: String; 就会报错// var name: String? = null; 这种写法的话,全体通知// lateinit 懒加载,必须是var的,可以更改,如果没有赋值,就不能使用,否则报错lateinit var name: Stringvar age: Int = 0;}fun main(){val person = Person() // 访问无参的次构造val person2 = Person(23)// 访问主构造
}

十一、接口、抽象类

// 接口默认是 open 的
interface CallBack {fun callBackMethod() : Boolean
}// Person2 后面默认的主构造是空的 Person2() abstract 修饰的类有open的特征
abstract class Person2() : CallBack //主构造
{abstract fun getLayoutId():Intabstract fun initView()}class Student2() : Person2() {override fun getLayoutId(): Int = 999override fun initView() {}override fun callBackMethod(): Boolean = false
}// TODO 抽象类和接口
fun main(){val student = Student2()
}

十二、数据类

// 数据类的关键字是data,(相当于Java的实体类)不需要使用大括号,
// 默认就会自动生成,get set equals hashCode toString copy方法等
data class User(val id:Int,val name:String,val sex:Char)
fun main(){val user = User(99,"李国菁",'M')val(myId,myName,mySex) = user.copy()// 假设我不想接收 myId,那么使用 _ 代替val(_,myName2,_) = user.copy()println("myId:$myId,myName:$myName,mySex:$mySex")println("myName2:$myName2")println("id : ${user.id} , name : ${user.name} , sex : ${user.sex}")
}

十三、单例类

// 加上 object 的话,那就就只实例化一次,相当于Java中的单例
// 变成单例之后,类的颜色就会变成黄色
object MyEngine {fun m() {println("M run")}fun show() {println("我就只有一个实例 ")}
}fun main(){MyEngine.m()MyEngine.m()MyEngine.m()MyEngine.m()MyEngine.m()}

十四、单例第一种写法

// TODO kt 中的单例
class NetManager {// object 只有一个实例object Holder{val instance = NetManager()}// kt 中没有静态函数,可以用派生操作companion object{// 全部都是静态函数,随着 NetManager 的出生而出生fun getInstance() : NetManager = Holder.instance}fun show(name: String){println("show: $name")}
}fun main(){NetManager.getInstance().show("liguojing")
}

十五、单例第二种写法

// TODO kt 中的单例
class NetManager2 {companion object {private var instance: NetManager2? = null// 这个表示 instance!! 我来负责 instance 肯定不为nullfun getInstance(): NetManager2 = if (instance == null) NetManager2() else instance!!}fun show(name: String){println("name: $name")}
}fun main() {NetManager2.getInstance().show("liguojing")
}

十六、内部类

class Test {val I = "AAA"// 这个不是内部类,所以拿不到外部类的成员// 这个是嵌套类,可以在类的里面再写一个类,但是这个类和外部类不交联// kt中可以不停嵌套,类中嵌套类,方法中嵌方法class Sub{fun show(){//println(I)}}// 这个才是内部类,可以拿到外部类的成员inner class Sub2{fun show(){println(I)}}
}
http://www.lbrq.cn/news/1325845.html

相关文章:

  • 建站平台哪个最好/驻马店百度seo
  • 重庆市建设工程管理协会网站/天津做优化好的公司
  • 劳动保障局瓯海劳务市场和做网站/seo做的比较牛的公司
  • php网站空间支持/志鸿优化设计官网
  • 成都网站建设116web/免费友情链接网页
  • 网站美食建设图片/网络营销推广外包平台
  • 保定网站seo服务/每天4元代发广告
  • wordpress 内部标签/网站seo推广营销
  • 做网站开发的步骤/搜狗网页版
  • 药品加工厂做网站/南宁seo专员
  • 网站建设服务费/百度关键字优化价格
  • 陕西哪些公司做企业网站/百度推广开户流程
  • 如何建设网站的外链/百度推广运营
  • 网站怎么做cp备案号/建站模板哪个好
  • 深圳做网站在去那备案/谷歌seo价格
  • 腾讯云企业官网建设/泰安seo网络公司
  • 营销网络图/杭州谷歌seo公司
  • 怎么做bs网站/交换神器
  • 做网站要签合同吗/新东方英语培训机构官网
  • 做设计一般用什么素材网站/软文范例500字
  • 自己黑自己做的网站/搜索到的相关信息
  • php做音乐网站/优化关键词有哪些方法
  • 代做毕业设计比较靠谱的网站/今天重大新闻头条
  • 学做网站网/2022年列入传销组织最新骗法
  • 做gif表情包的网站/网络营销师证
  • 山东淄博网站建设的公司/地方网站建设
  • 发稿是什么意思/谷歌优化方法
  • 建设银行深分行圳招聘网站/揭阳seo推广公司
  • 网站建设项目wbs/百度搜索引擎营销
  • 运营托管公司/成都seo服务
  • Java中Lambda 表达式的解释
  • 高效截图的4款工具深度解析
  • 社群团购市场选择与开源技术赋能下的下沉市场开拓策略研究——以开源AI智能名片、链动2+1模式与S2B2C商城小程序为例
  • 分类预测 | Matlab实现CPO-PNN冠豪猪算法优化概率神经网络多特征分类预测
  • 《Java 程序设计》核心知识点梳理与深入探究
  • Java 根据多个 MM-dd 日期计算总时长(包含当日和次日)