来入门一下kotlin吧

Kotlin是什么?
Kotlin是一种在java虚拟机上运行的静态类型的编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。

Kotlin的优势!
Kotlin可以编译成java字节码,也可以编译成JavaScript。方便在没有java虚拟机的主机上运行。(据说学会Kotlin,你就是一名全栈工程师 (/偷笑))

并且的2017年的 Google I/O大会上,Google宣布将Kotlin作为Android的官方开发语言。(这就意味着,作为一名“资深‘的android开发工程师,以后就必须得会Kotlin了)

Kotlin相对于java开发android有什么优势呢?(个人亲身体验)
拿辉哥的话说:一个字!简洁!(一直用java写android,当我用kotlin写了android的一个Demo之后,暂且不讨论它的底层等等,对于写法上,就是简洁!可能本章节体现的简洁不是很明显)

这一篇的入门,前提是你是有java基础的情况下。这样子你可以举一反三,才会看懂一部分。所以......往下看吧

Kotlin的使用!(这里以Android Studio 为例进行演示)
一、安装Kotlin插件
mac本用快捷键(command + ,)打开设置面板,找到Plugins 进行搜索 (如图所示)

img_7bee4579de3e1bb53a661e3f52b8244e.png
image.png

找不到不要紧,点击蓝色超链接。


img_633f35e6b392fc2a76e49a99483fef05.png
image.png

找到kotlin进行下载,然后重启Android studio即可。

二、开始将java代码转为kotlin(激动吗,有点小激动呢)
我们来新建一个项目,(这里步骤较多,占用图片资源大,但是很简单,不会的童鞋可以问问android的同学,或者可以问小黄哦,小黄已经得我真传,开始学习android了)

好了好了,废话不多说,开始转换。


img_404445fd1a8a5e969669d36d8ca3296f.png
image.png

像这种我们类名前面有蓝色背景,黑色字体C的为java代码,C代表的是 class。那么如何快速转换为kotlin代码呢?

img_65fe577975119ddb4d50154f75420d3e.png
image.png

我们找到顶部菜单栏的code选项,并且选中最下方的 Convert Java File to Kotlin File 开始转换

转换完成后,点击右上角 Configure,然后默认为最新版本直接点击 OK即可。

img_b8e8c0b83e617d8819c0f1dd333556b1.png
image.png

ok,完美转换

package kotlindemo.yjy.com.mykotlindemoimport android.support.v7.app.AppCompatActivity
import android.os.Bundleclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}

可能你还感觉并没有多大的改变,没关系,我们慢慢往下看。

三、开始简单实用kotlin开发android吧!(这里东西较多,会有与java开发作比对的部分)
1.来一句最简单的,hello world吧!

先来看看java代码:

public class MainTestActivity extends Activity {private TextView textView;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initview();}private void initview() {textView = findViewById(R.id.main_tv);textView.setText("hello world!");}
}

接下来是kotlin代码:

class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initview()}fun initview(): Unit {main_tv.setText("hello world")}
}

kotlin代码免掉了findviewbyid的方法,这个依赖在创建项目时勾选kotlin会自动导入,或者手动导入都可以。

依赖代码放这里:(我想懂android的都知道怎么用,你懂android吗? /偷笑)

apply plugin: 'kotlin-android-extensions'

2.来一个比较大小的代码
先来看看java代码:

private int max(int num1, int num2) {if (num1 > num2) {return num1;} else {return num2;}
}

再来看看kotlin代码:

fun max(num1: Int, num2: Int): Int = if (num1 > num2) num1 else num2

一样的含义,也许你并不感觉kotlin有简洁多少,少许代码感觉不出来,那么继续往后看。

3.来看一下返回String类型的时候吧()

这次我们先看看kotlin代码:

fun getstr(str: String): String = str?.length.toString()

//kotlin为我们提供了避免string类型空指针,这行代码的意思是:str为不为null?为null就返回str的length,不为null就返回str原来的值。

再来看看java代码:

private String getStr(String str) {return str;
}

//上面的代码一看,直接返回,如果str为空怎么办呢,java会给我们直接报空指针异常。要是为了避免空指针异常就得用下面的改进版。

private String getStr(String str) {if (str != null) {return str;} else {return "";}
}

用改进版的代码跟kotlin一比,这次终于知道简洁在哪里了吧。

4.来看看变量的定义与使用

来看看kotlin代码:


//定义string类型的变量,
var i = "a"
//或者
var i1: String = "a"
//定义int类型的变量
var a = 1
//或者
var a1: Int = 3
//表示不可修改的参数(类似于java的final)
val c1 = "abc"

可以看出,koltin可以不指定类型,当kotlin不指定类型的时候,kotlin会自己转义,有引号的默认为string,没有引号的数字会自动转成int。

再来看看java代码:

//定义String类型的变量
String i = "a";
//定义int类型的变量
int a = 1;
//修饰不可修改的参数。或者说只可以赋值一次。
final String c1 = "abc";

不难看出,java的代码所有的变量都必须指定一个类型,因为java是强类型语音,这就是为什么我们跟后台同学们调试参数的过程中总是出现问题的原因。如果改用kotlin会不会这个问题就少了呢,我也不好说,哈哈。

恭喜你已经看完了,看完之后别人问你会kotlin吗?你可以自豪的说,我已经入门了。

这一节课就到这里,学习语言最基础的东西。 后续还会更新内容,有更简洁的东西。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache2 配置php,Windows配置PHP5与Apache2

windows下安装和配置PHP5与Apache2真是比linux下难多了,唉。这里用的是PHP Version 5.2.1和Apache HTTP Server 2.2.4,都是从官方网站下的。1. 下载安装,不多说了,apache一路按下去就ok,php连按都不用,解压…

ReactNative 触摸事件处理

ReactNative触摸事件处理 对RN触摸事件的捕获与冒泡机制的理解 组件A、B、C结构 组件A组件B组件C 捕获、冒泡机制 sequenceDiagram A->>A: 是否捕获?若是则停止向下一级传递 A->>B: B->>B: 是否捕获?若是则停止向下一级传递 B->&g…

CISCO网络故障排错命令总结分享

一、故障处理命令 1、show命令: 1) 全局命令: show version ;显示系统硬件和软件版本、DRAM、Flash show startup-config ;显示写入NVRAM中的配置内容 show running-config ;显示当前运行的配置内容 show b…

java input回车,用java怎样编写加减乘除,从键盘输入,例如:1+2按回车得到

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import org.junit.Test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestCalc {Testpublic void testCalculator() {String input "11";//输入String rule "(\\d\\.?\\d*)([\\…

Java中数组在内存中的存放原理?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangyong0717/article/details/79165685Java中数组被实现为对象,它们一般都会因为记录长度而需要额外的内存。对于一个原始数据类型的数组,一般需要24…

程序员如何面试才能拿到offer

一、概述 面试,难还是不难?取决于面试者的底蕴(气场技能)、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判,在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑:“面试官为什么会…

php 跨区域,如何构造PHP的内容包括在非安全(http://)和安全(https://)区域以及跨多个目录使用?...

只需使用//example.com/foo.blah即可.< img id “sample-image”src “// /media/sample-image.png”/>很明显,HTTP是协议,但存在其他协议,如GOPHER,HTTPS,FTP等……而不是在gopher URL gopher&#xff1a;//example.com上,您只需链接到//example.com,协议就可以在没有它…

Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)阅读笔记

弱监督目标检测相对于一般的目标检测任务来说&#xff0c;训练样本不需要实例级别的标注&#xff0c;只需要图片级别的标注&#xff0c;即告诉图片中有什么而不需标注位置信息&#xff0c;这种标注图片容易获取&#xff0c;能节省标注时间及精力。现有的大部分方法在进行若监督…

如何添加JWT生成的token在请求头中

前言 在我们使用JWT来做用户的验证时&#xff0c;我们登陆生成对应的token,并加入到请求的参数中发送到后台提供相关的权限校验。这个时候我们需要使用到传递请求头参数传递的问题&#xff0c;下面是两种方式。 1.ajax提交方式 1&#xff09;.方法一&#xff1a; $.ajax({ type…

Gradle 使用技巧(二) - SO/NDK过滤

引言 作为一个Android开发人员&#xff0c;so对于我们来讲是极其常见的&#xff0c;各种大厂的SDK中都包含着各种各样的so&#xff0c;而so也是apk瘦身的重要一环&#xff0c;减少so平台的数量&#xff0c;可以极大限度的减少apk的大小。 Android 中的so 先看一张官方的图&…

java两个数之间质数求法,求任意两个整数之间质数的个数的代码!!!(新手编写)...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*** Title:Calculate acount of prime number between preNum and rearNum;* Author: public* Time&#xff1a;2008.12.5 21:09:35*/import java.awt.*;import java.awt.event.*;class Arithmetic{//将计算质数个数的类封装在此类…

VMware——安装CentOS

VMware——安装CentOS 摘要&#xff1a;本文主要记录了在VMware虚拟机里安装CentOS的步骤。 下载操作系统 可以从下面的镜像地址去下载各种版本的CentOS&#xff0c;此次安装使用的版本是7.2&#xff1a; http://archive.kernel.org/centos-vault/ http://mirror.nsc.liu.se/ce…

django1.4.9 OMserverweb站点管理

1.项目setting.py配置&#xff1a; 2.项目url.py配置&#xff1a; 错误提示&#xff1a;auth_user这个表没有创建&#xff0c;那个因为,admin站点默认数据表需要迁移。执行python manage.py syncdb 会创建所有应用程序需要的数据库表4.接下来就是根据要求一步一步来&#xff1a…

matlab读取气象数据,基于MATLAB实现3种气象数据的读取和绘图

第 29卷第 4期 2007年 11月 广 东 气 象 GuangdongMeteorology Vol. 29  No. 4 November 2007 基于 MATLAB实现 3种气象数据的读取和绘图 刘  峰 , 刘  娟 , 李  萍 , 林  智 (民航中南空中交通管理局气象中心 ,广东广州  510406)   摘  要 :针对 M ICAPS、 GR IB和…

[USACO17JAN]Promotion Counting 题解

前言 巨佬说:要有线段树&#xff0c;结果蒟蒻打了一棵树状数组... 想想啊&#xff0c;奶牛都开公司当老板了&#xff0c;我还在这里码代码&#xff0c;太失败了。话说奶牛开个公司老板不应该是FarmerJohn吗&#xff1f; 题解 刚看到这道题的时候竟然没有想到深搜&#xff0c;然…

牛客小白月赛6 水题 求n!在m进制下末尾0的个数 数论

链接&#xff1a;https://www.nowcoder.com/acm/contest/135/C来源&#xff1a;牛客网 题目描述 其中&#xff0c;f(1)1;f(2)1;Z皇后的方案数&#xff1a;即在ZZ的棋盘上放置Z个皇后&#xff0c;使其互不攻击的方案数。 输入描述: 输入数据共一行&#xff0c;两个正整数x,m&am…

centos php7 apcu,centos php5.4 升级 php7

接上篇&#xff0c;edusoho需要php5.5以上版本&#xff0c;于是需要升级本地phpphp是通过yum默认安装的。以下安装参考 linkhttps://blog.csdn.net/u012569217/article/details/77506902因此先查看本地php版本php -v检查当前php的安装包yum list installed | grep php将本地php…

子类访问父类和方法覆写

子类不能直接访问父类的私有成员&#xff1b; 但是子类可以调用父类中的非私有方法来间接访问父类的私有成员。 Person类中有私有字段name,Student继承Person new Sudent().name; new Student().getName(); √ 子类拓展父类&#xff08;子类是父类的一种特殊…

面向对象笔试题练习一

1.接口只能被类实现&#xff0c;类不能继承接口&#xff0c;遵循单继承多实现原则&#xff1b; 2.静态方法中不能引用其外部的非静态成员&#xff1b; 3.实现 Runnable 接口&#xff0c;接口中有一个抽象方法 run&#xff0c;实现类中重写该方法&#xff1b; 4.public修饰的方法…

curl 升级 php,将命令行cURL转换为PHP cURL

我从来没有做过任何卷曲&#xff0c;所以需要一些帮助。我试图从例子中解决这个问题&#xff0c;但无法理解它&#xff01;我有一个curl命令&#xff0c;我可以从linux(ubuntu)命令行成功运行&#xff0c;该命令行通过api将文件放入wiki。我需要将这个curl命令合并到我正在构建…