威尼斯官网网址 4

Kotlin入门第一课:从比较Java开端

Posted by

     
我是一个.net 程序员,虽然说一直做后台,但是web 前端也会去学,虽然说技术只是层窗户纸,但是像我这种多动症患者,不捅破我心难受啊!

1. 介绍

好!废话不多提,下面直接正题,至于less 是什么这里不多讲因为官网写的很清楚
   然后你进官网之后你会发现,这些东西很难看懂

今年初,甲骨文再次对谷歌所谓的安卓侵权使用Java提起诉讼,要求后者赔偿高达90亿美元。随后便传出谷歌因此计划将主力语言切换到苹果主导的Swift,不过这事后来没了跟进。

好!我这篇就是告诉大家如何才能看明白这些内容的,看完我这篇随笔,只需要一个小时的时间你就会掌握less 进行开发了!

但谷歌在这两天的I/O大会上宣布了新决定:Kotlin语言正式成为安卓开发的一级编程语言。资料显示,Kotlin由JetBrains公司开发,于2010年首次推出,次年开源。它与Java
100%互通,并具备诸多Java尚不支持的新特性,下一版的Android
Studio(3.0)将提供支持。

      ①首先我们知道less需要一个编译器但是官网上提供的是nodejs npm 下的包,这些我都不用,因为为了简单并提高效率,我推荐的一款自动编译的软件

去年底的时候接触到Kotlin,尝试将一个练手的Android项目由Java转为Kotlin实现并写了一篇文章(初次尝试用Kotlin实现Android项目)。既然现在Google正式发话了,作为一名Android开发者,先不说要不要替换Java,利用闲暇时间先系统地学习起来肯定是没错的。

http://koala-app.com/index-zh.html
   
考拉下载就行,打开如图所示,您可以更改语言!威尼斯官网网址 1

关于Kotlin的各种介绍和教程在网上都可以找得到,下面附上几个链接供大家参考:
英文官网
中文版PDF下载
Kotlin in
Chinese
Kotlin官网
Kotlin官网:中文
中文版:Kotlin for Android
Developers
如何评价 Kotlin
语言?——知乎
Android开发必备知识:为什么说Kotlin值得一试

点击设置更改语言

2. 简洁性

威尼斯官网网址 2

Google有意从Java转到Kotlin,当然不仅仅是因为甲骨文的官司,而且Kotlin是由JetBrains开发。这就不难猜到,Kotlin这门语言本身有胜过Java的地方,还不止一点点。

使用的时候很简单只需要把我们新建的文件夹拖入到上面就可以了这里不再多讲,好!下面我就操作,新建个项目来写less 大家请往下看

如果只是想体验Kotlin和Java的基本差异,选择Intellij
IDEA就可以,新建、编译Java或者Kotlin项目速度较快;如果需要在Android项目中编写Kotlin代码,建议用Android
Studio,虽然目前只能通过安装插件的形式来支持Kotlin,但使用起来毫无违和感。所以,电脑条件允许的话把两个开发环境都装上,以备不时之需。

威尼斯官网网址 3

这篇文章主要是通过测试代码来比较Kotlin和Java的几个不同点,利用IntelliJ
IDEA建了一个Kotlin项目Kotlin0,之后关于纯Kotlin代码的项目会放在Github上的地址KotlinForJava,涉及Kotlin代码实现的Android项目会放在KotlinForAndroid。

 威尼斯官网网址 4

教程写的再好,如果没有不断的编码积累,也只能学到表面的知识。另外,Kotlin官网提供了威尼斯官网网址,在线编码测试,懒得搭建环境的朋友可以直接在上面写代码和运行。

这个时候你右键style.less 设置css 输出路径,好了编译器弄完了!这个时候才是真正的正题了直接上代码

2.1 数据类定义

@min-width:200px;    //定义变量 变量名一定要时候@  然后 后面分号加上数值 每个变量只能定义一次
@min-height:100px;
//----------------------------------------------------------------------------------------------
/*下面的看见是不是比较陌生,这个类似函数功能,我把常用的
  css 过渡兼容性都封装起来以后用的时候直接调用这个方法
  就可以了*/
.transition(@duration:0.8s,@timing-function:ease)
{
    transition:@duration @timing-function;
    -moz-transition:@duration @timing-function;
    -o-transition:@duration @timing-function;
    -webkit-transition:@duration @timing-function;
    -ms-transition:@duration @timing-function;
}
/*这个也是个方法在下面也有调用*/
.GetDefaultColor(@color:#f00) {
    background-color: @color;
}

.divs {
    /*调用获取默认颜色方法*/
    .GetDefaultColor(#000);
    width: percentage(0.5);
    height: min-height;
    /*看见这行代码了吗?这就是上面的函数如果你想要封装的更多你可以使用类,
       这里说的类就是大函数嵌套小函数,和js 的类差不多写法如上面所示*/
    .transition(0.5s,ease-in-out);

    /*less 是可以嵌套的 选择器可以再次嵌套选择器会生成 .divs p {}这样的形式
      & 这个就是当前选择器的父辈的名字
        这个&在这个嵌套里面就相当于 .divs*/

    &:hover {
        background-color: #b6ff00;
    }
}

Java:

 

public class Artist {
    private long id;
    private String name;
    private String blog;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getBlog() {
        return blog;
    }

    public void setBlog(String blog) {
        this.blog = blog;
    }

    @Override public String toString() {
        return "Artist{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", blog='" + blog + ''''}';
    }
}

 

属性+设置+获取+toString(),一个数据类的基本功能就有了,三个属性的类写了三十几行代码。

有了less 是不是感觉方便许多,以后我们在写css 的时候就可以管理less就行不用写css 了这样方便管理,也省事。

Kotlin:

生成的css 是这样的

data class Artist(
        var id: Long,
        var name: String,
        var blog: String)
/*下面的看见是不是比较陌生,这个类似函数功能,我把常用的
  css 过渡兼容性都封装起来以后用的时候直接调用这个方法
  就可以了*/
/*这个也是个方法在下面也有调用*/
/* line 20, style.less */
.divs {
  /*调用获取默认颜色方法*/
  background-color: #000000;
  width: 50%;
  height: min-height;
  /*看见这行代码了吗?这就是上面的函数如果你想要封装的更多你可以使用类,
       这里说的类就是大函数嵌套小函数,和js 的类差不多写法如上面所示*/
  transition: 0.5s ease-in-out;
  -moz-transition: 0.5s ease-in-out;
  -o-transition: 0.5s ease-in-out;
  -webkit-transition: 0.5s ease-in-out;
  -ms-transition: 0.5s ease-in-out;
  /*less 是可以嵌套的 选择器可以再次嵌套选择器会生成 .divs p {}这样的形式
      & 这个就是当前选择器的父辈的名字
        这个&在这个嵌套里面就相当于 .divs*/
}
/* line 33, style.less */
.divs:hover {
  background-color: #b6ff00;
}

上面类的定义,Kotlin声明属性是默认访问修饰符,而Java是private,如果kotlin也是private,那同样得定义一系列的set()/get(),不然在类外面无法通过对象获取属性。

 

除了代码量上的不同,还得关注data关键字和类名后面紧跟的属性列表。

仔细看看和上面css 的代码和上面的less 有什么不同

先看参数列表,这里其实对应的是Java中的有参构造函数。如果Kotlin定义类时有参数列表,那么新建对象时必须传入形参值,不像Java有两种方式(1
先建一个无参对象,再通过set()来给属性赋值;2
直接通过参数列表创建对象)。但是使用过之后就会发现,Kotlin这种做法更简洁,且不会出现新建了对象而属性没有赋值的情况,也就更安全了。当然,Kotlin还是可以再定义其他的构造、初始化及一般功能性的方法。

这样你就能发现有变量的好处,如果你能把上面的好好看上一遍每个代码的注释都看一遍,然后你再次上官网看less 的教程你发现会非常的简单,只要1小时就可以开发less

创建对象

接下来我会更新mvc4 +bootstrap+knockoutjs+less 来开发项目具体教程。

Java:

Artist artist = new Artist(1, "Dylan", "http://www.cnblogs.com/tgyf/");

Kotlin:

var artist = Artist(1, "Dylan", "http://www.cnblogs.com/tgyf/")

Kotlin对象创建不用加new关键字,而且语句后面不用加分号”;”(即使加上也会被忽略)。

toString()

而类名前的data关键字,是显示声明该类是作为数据类使用,通过toString()打印的结果可以看出区别,打印语句:

println("artist.toString(): " + artist.toString())

不加data结果:

artist.toString(): Artist@61bbe9ba

加上data结果:

artist.toString(): Artist(id=1, name=Dylan, blog=http://www.cnblogs.com/tgyf/)

可以看到toString()是Kotlin自动生成的,如果类声明不加data,只会打印出一串数字(应该是类的内存地址),而不是当前对象的属性信息。**

2.2 变量空安全

不管是C++的指针,还是Java的引用,因指向对象为null导致的问题一直困扰着我们。Kotlin提供了一种安全机制,尽量减少变量在使用前是null的情况。

Java:

String str;
if (str != null) {
    //do something
}

对于Java代码,编译器不会强制每次使用引用变量之前进行null判断,即异常往往会在运行时报出,但这正是危险所在。

Kotlin:

var str1: String = null  //Null can not be a value of a non-null type String
var str2: String? = null  //str2 can be null
var str3 = "testNull"  //non-null--String type
var str4 = null  //null
var str5: String  //non-null--String type
str5 = "testNull"  //assigned String value
var str6  //no type or initialization
var str7: String? = "testNull"

结合代码中的注释,我们来看这四行代码想表达的意思。

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注