IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 新版Kotlin从入门到精通 笔记汇总 -> 正文阅读

[移动开发]新版Kotlin从入门到精通 笔记汇总

?看看我是怎么学习Flutter的? ?https://pan.baidu.com/s/16GwFh17fihySHvEVt02OkQ 提取码:86ir?

前言
Kotlin是一种在 Java虚拟机上执行的静态型别编程语言,它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言。该语言有几个优势
1. 简洁
它大大减少你需要写的样板代码的数量。
2. 安全
避免空指针异常等整个类的错误。
3. 通用
构建服务器端程序、Android 应用程序或者在浏览器中运行的前端程序。
4. 互操作性
通过 100% Java 互操作性,利用 JVM 既有框架和库。

配置
在我们的AndroidStudio开发工具中,要想使用Kotlin这个优秀的开发语言,我们需要安装插件,直接在安装插件界面搜索Kotlin然后安装。之后再gradle文件增加如下配置

apply plugin:'kotlin-android'
apply plugin:'kotlin-android-extensions'

?看看我是怎么学习Flutter的? ?https://pan.baidu.com/s/16GwFh17fihySHvEVt02OkQ 提取码:86ir?

dependencies {
? ? compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

项目gradle文件

buildscript {
? ? ext.kotlin_version = '1.1.1'
? ? repositories {
? ? ? ? jcenter()
? ? }
? ? dependencies {
? ? ? ? classpath 'com.android.tools.build:gradle:2.3.1'
? ? ? ? classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

? ? ? ? // NOTE: Do not place your application dependencies here; they belong
? ? ? ? // in the individual module build.gradle files
? ? }
}

完成上面的配置后,我们就可以愉快的玩耍了。

?看看我是怎么学习Flutter的? ?https://pan.baidu.com/s/16GwFh17fihySHvEVt02OkQ 提取码:86ir?

Kotlin示例
首先我们还和以前一样,创建一个Android项目,自动创建一个Activity之后我们再创建一个java类

public class MainActivity extends AppCompatActivity {

? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
? ? ? ? setSupportActionBar(toolbar);

? ? ? ? FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
? ? ? ? fab.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
? ? ? ? ? ? ? ? ? ? ? ? .setAction("Action", null).show();
? ? ? ? ? ? }
? ? ? ? });
? ? }

? ? @Override
? ? public boolean onCreateOptionsMenu(Menu menu) {
? ? ? ? // Inflate the menu; this adds items to the action bar if it is present.
? ? ? ? getMenuInflater().inflate(R.menu.menu_main, menu);
? ? ? ? return true;
? ? }

? ? @Override
? ? public boolean onOptionsItemSelected(MenuItem item) {
? ? ? ? // Handle action bar item clicks here. The action bar will
? ? ? ? // automatically handle clicks on the Home/Up button, so long
? ? ? ? // as you specify a parent activity in AndroidManifest.xml.
? ? ? ? int id = item.getItemId();

? ? ? ? //noinspection SimplifiableIfStatement
? ? ? ? if (id == R.id.action_settings) {
? ? ? ? ? ? return true;
? ? ? ? }

? ? ? ? return super.onOptionsItemSelected(item);
? ? }
}
public class Test {
? ? private static String str = null;

? ? public static void main(String[] args) {
? ? ? ? str = "Code4Android";
? ? ? ? System.out.println(str);
? ? }
}

那上面的代码如果用kotlin实现是什么样子呢。尽管现在我们还不能写出Kotlin代码,但是在安装插件后AS中提供了自动转换Kotlin代码的功能

转换后的Kotlin代码

class MainActivity : AppCompatActivity() {

? ? override fun onCreate(savedInstanceState: Bundle?) {
? ? ? ? super.onCreate(savedInstanceState)
? ? ? ? setContentView(R.layout.activity_main)
? ? ? ? val toolbar = findViewById(R.id.toolbar) as Toolbar
? ? ? ? setSupportActionBar(toolbar)

? ? ? ? val fab = findViewById(R.id.fab) as FloatingActionButton
? ? ? ? fab.setOnClickListener { view ->
? ? ? ? ? ? Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
? ? ? ? ? ? ? ? ? ? .setAction("Action", null).show()
? ? ? ? }
? ? }

? ? override fun onCreateOptionsMenu(menu: Menu): Boolean {
? ? ? ? // Inflate the menu; this adds items to the action bar if it is present.
? ? ? ? menuInflater.inflate(R.menu.menu_main, menu)
? ? ? ? return true
? ? }

? ? override fun onOptionsItemSelected(item: MenuItem): Boolean {
? ? ? ? val id = item.itemId
? ? ? ? if (id == R.id.action_settings) {
? ? ? ? ? ? return true
? ? ? ? }
? ? ? ? return super.onOptionsItemSelected(item)
? ? }
}


object Test {
? ? private var str: String? = null

? ? @JvmStatic fun main(args: Array<String>) {
? ? ? ? str = "Code4Android"
? ? ? ? println(str)
? ? }
}

注意:AS提供的java代码自动转换功能,我们不要轻易使用,更不要转化我们成熟的项目,如果需要就需要我们自己去重构实现。否则会有意向不到的事情等着你,毕竟转换不是那么智能。上面的代码只是让你先简单熟悉下Kotlin代码时什么样子的,接下来我们先去学习一下Kotlin的基本语法。相信很容易上手。

Hello World!
我们由一个简单的”Hello World!”输出程序开始。与新建java文件类似,如下图,我们选择Kotlin File/Class.创建一个Kotlin文件。

package com.learnrecord

/**
?*Created by Code4Android on 2017/4/21.
?*/

var str: String = ""

fun main(args: Array<String>) {
? ? str = "Hello World!"
? ? println(str)
}

上述代码就是简单的输出一个字符串“Hello World”,package 后面跟的是包名,我们看出了和java文件的区别,在包名后面没有以分号“;”结尾。在Kotlin语法中,语句结尾都不在有分号“;”。

在Kotlin中变量声明有两种类型,val修饰变量是只读变量即只能赋值一次,再次赋值时就会编译错误
,如果我们需要多次修改值就需要使用var。在上面的 var str: String = “”中,str是变量名,:String,表明该变量是String类型变量,后面就是赋值语句。我们也可以这样写var str= “”省略了生命变量类型,它可以根据赋的值而自动推断出类型。如果我们使用下面赋值语句str=null,发现null是不能赋值的,这就是Kotlin的特性,如果我们想赋值null,可以修改为 var str:String?=”“。
fun就是函数生命,而这个main函数就和我们java中的main方法一样,是程序执行的入口。println就是一个打印输出。

Kotlin声明类型
在Kotlin中有如下几种Number类型,他们都是继承自Number抽象类。
Float(32位),Double(64),Int(32),Byte(8),Short(16),Long(64,类型用大写L,如12L),Any(任意类型),数组类型Array 根据传入的泛型数据自动匹配类型,Kotlin还提供了指定类型的Array,如ByteArray,CharArray,ShortArray,IntArray,LongArray,FloatArray,DoubleArray,BooleanArray。在数组类型中都提供了get(index),set(index,value)及iterator()方法供我们使用。

? ? val iArray: IntArray = intArrayOf(1, 2, 3)
? ? val sArray: Array<String> = Array<String>(3, { i -> i.toString() })
? ? val anyArray: Array<Any> = arrayOf(1, "2", 3.0, 4.1f) // 可将类型进行混排放入同一个数组中
? ? val lArray: LongArray = longArrayOf(1L, 2L, 3L)

函数
我们先来实现一个简单的数值求和的函数,通用实现方法如下

? ? fun sum(a: Int, b: Int): Int {
? ? ? ? return a + b
? ? }

传入两个Int型数值,sum是函数名,括号后面的:Int表示该函数返回Int的值,函数体中对两个数字相加并返回。在Kotlin中表达式也可以作为函数体,编译器可以推断出返回类型,可以简化为

? ? fun sum(a: Int, b: Int) = a + b
1
为了更好理解表达式可以作为函数体,我们可以创建一个函数获取两个数的最大值,如下:

? fun max1(a:Int,b:Int)=if (a>b) a else b
1
需要注意的是若if后有多个表达式,如下

? ? fun max1(a:Int,b:Int)= if (a > b) {
? ? ? ? println(a)
? ? ? ? a
? ? } else {
? ? ? ? println(b)
? ? ? ? //如果我们将println(b)放到b的下面,运行会返回kotlin.Unit为无类型,返回值总是最后一个表达式的返回值或值
? ? ? ? b
? ? }
? ? println(max1(1,3))

括号中的表达式顺序决定了返回的值及其类型。

如果我们的方法体仅仅是打印字符串,并不返回值则

? ? fun printInt(a: Int): Unit {
? ? ? ? println(a)
? ? }
1
2
3
Unit就类似我们java中的void,即没有返回值,此时我们可以省略

? ? fun printInt(a: Int) {
? ? ? ? println(a)
? ? }
1
2
3
对于函数体,方法或者类等和java一样也有一些修饰符,如下

abstract //抽象类标示
final //标示类不可继承,默认属性
enum //标示类为枚举
open //类可继承,类默认是final的
annotation //注解类
private //仅在同一个文件中可见
protected //同一个文件中或子类可见,不可修饰类
public //所有调用的地方都可见
internal //同一个模块中可见,若类不加修饰符,则默认为该修饰符,作用域为同一个应用的所有模块,起保护作用,防止模块外被调用。
操作符

?看看我是怎么学习Flutter的? ?https://pan.baidu.com/s/16GwFh17fihySHvEVt02OkQ 提取码:86ir
——————————————
原文链接:https://blog.csdn.net/xiehuimx/article/details/70768025

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 16:06:39  更:2021-12-18 16:08:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:05:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码