swift
moble_xie
IT路上的点点滴滴(大数据,移动开发)
展开
-
对照Java学习Swift--集合类型
数组Java里面的数组,创建了以后的大小是不能改变的,只能往里面去存储数据,有两个方式创建数组: String[] array = new String[10]; String[] array1 = {"aa","bb","cc"};我们创建了两个String数组,一个大小为10,每个元素为null的数组,一个3个元素的数组。 Swift的数组则灵活的多,我们先来原创 2016-03-15 23:32:44 · 1256 阅读 · 0 评论 -
对照Java学习Swift--类型转换(Type Casting)
类型转换在Java和Swift中非常的相似,这个一般都是在类中, 可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。也可以用它来检查一个类型是否实现了某个协议,协议相当于Java中的接口。检查类型(Checking Type)用类型检查操作符(is)来检查一个实例是否属于特定子类型。若实例属于那个子类型,类型检查操作符返回 true,否则返回 false。Java中使用instanceof原创 2016-05-12 12:11:41 · 1756 阅读 · 0 评论 -
对照Java学习Swift--嵌套类型(Nested Types)
这个很简单,就是在类型的内部定义一个类型,跟Java中的内部类很相似,Swift 允许你定义嵌套类型,可以在支持的类型中定义嵌套的枚举、类和结构体。嵌套类型实践看个例子,也是apple的官网上拿过来的:struct BlackjackCard { // 嵌套的 Suit 枚举 enum Suit: Character { case Spades = "♠", Heart原创 2016-05-12 23:33:19 · 1318 阅读 · 0 评论 -
对照Java学习Swift--扩展(Extensions)
扩展(Extensions)在Java中是没有的,这个是Swift中特有的,oc中应该也有吧,但是extends关键字是作为Java中的继承关系连接子类和父类的。 扩展 就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即 逆向建模 )。在Java中有个功能叫反射,也能够做Swift扩展的功能,而且非常强大,Swift的扩展有很大的局原创 2016-05-14 01:12:29 · 1009 阅读 · 0 评论 -
对照Java学习Swift--协议(Protocols)
简要协议是苹果给它自己设计的语言的一种类型,Swift和OC都叫协议,它的功能更Java中的接口非常类似,其实就是Java中的接口功能,就是名称不一样而已,我们可以类比来学,但是有一点,Java中没有扩展,所以Java中的接口也是不可以扩展的,但是Swift可以。协议语法协议使用protocol关键字来定义:protocol SomeProtocol { // 这里是协议的定义部分}Jav原创 2016-05-14 23:11:06 · 3020 阅读 · 0 评论 -
对照Java学习Swift--泛型(Generics)
简介泛型代码让你能够根据自定义的需求,编写出适用于任意类型、灵活可重用的函数及类型。它能让你避免代码的重复,用一种清晰和抽象的方式来表达代码的意图。从Java1.5开始,引进了泛型,Swift和Java的泛型很类似,都很强大,学过Java的同学都知道。 Swift中的数组、字典、集合都是泛型集合,同样的Java的集合类型也是支持泛型的,可能是为了兼容,也可以不指定泛型。泛型类型Swift 允许你定原创 2016-05-15 11:52:59 · 882 阅读 · 0 评论 -
对照Java学习Swift--下标(Subscripts)
Java中限制了下标的操作,只有在数组中才能使用,非常简单,但是在Swift中,可以在类(class)、结构体(structure)和枚举(enumeration)中,是访问集合(collection),列表(list)或序列(sequence)中元素的快捷方式。下标语法下标允许你通过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行存取。语法类似于实例方法语法和计算型属性语法的混合。与定义原创 2016-05-05 00:48:02 · 1297 阅读 · 0 评论 -
对照Java学习Swift--继承(Inheritance)
Swift和Java对于继承大部分是一样的,只是语法稍有不同,Java中继承用extends关键字,Swift用冒号来实现继承。 Java中所有的类默认继承于Object类,Swift则没有这个规定。 Java中用override注解关键字来表明是重写父类的方法,不是强制的,Swift必须用override关键字来指明是重写的父类的方法,属性,下标。 Java和Swift都是用final来防止原创 2016-05-07 00:09:12 · 742 阅读 · 0 评论 -
对照Java学习Swift--构造过程(Initialization)
Swift和Java的构造器的功能差不多,但是在语法层面有些不同,都是为了实现实例的创建。 Swift构造方法是用init关键字来实现,Java使用跟类名一样的方法来实现,都没有返回值,但是Swift的可失败构造方法如果构建失败返回nil是个例外。 Swift的构造方法:init() { // 在此处执行构造过程}Java中的构造方法:public Person(){原创 2016-05-07 21:01:31 · 905 阅读 · 0 评论 -
对照Java学习Swift--析构过程(Deinitialization)
析构过程在Java的语言层面是没有的,Swift这有这个功能,语法为:deinit { // 执行析构过程}在构造方法前面加个de,够形象的,便于理解,主要是在类实例被销毁前,释放相关的资源。 在Java的里面没有这个功能,需要开发者自己去调用代码来销魂相关的资源,比如一个对文件操作的类,当我打开文件流以后,我们需要手动调用相关的代码来关闭流,在很多的开发框架中,本身提供相关的回调方法来原创 2016-05-07 22:18:04 · 676 阅读 · 0 评论 -
对照Java学习Swift--自动引用计数(Automatic Reference Counting)
自动引用计数(Automatic Reference Counting)简称ARC,是Swift对应用程序内存的跟踪和管理。跟Java里面的Gc类似,但是又不太一样。 ARC是实例的引用数为0,ARC就会销毁这个实例。 GC是当程序不能访问这个实例,称为该实例”不可达的”,GC就会负责回收这些”不可达的”的实例,回收算法很复杂,Java规范对GC的很多行为都没有进行严格的规定,不同的厂商在各自实原创 2016-05-08 12:36:06 · 1375 阅读 · 0 评论 -
对照Java学习Swift--方法(Methods)
方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。实例方法 (Instance Methods)实例方法是属于某个特定类、结构体或者枚举类型实例的方法。实例方法提供访问和修改实例属性的方法或提供与实例目的相关的功能,并以此来支撑实例的功能。实例方法的语法与函数完全一致。原创 2016-04-30 11:29:46 · 662 阅读 · 0 评论 -
对照Java学习Swift--属性 (Properties)
Swift中属性包括存储属性和计算属性。 计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体。 结构体和枚举的常量实例属性不能修改,类则不受限制,因为结构体和枚举是值类型,类则是引用类型。 延迟属性,在初始化实例的时候不会初始化延迟属性,只会在第一次使用的时候初始化。原创 2016-04-30 00:58:09 · 660 阅读 · 0 评论 -
对照Java学习Swift--闭包(Closures)
闭包是自包含的函数代码块,可以在代码中被传递和使用。我的理解就是一段代码可以直接使用和传递,不需要想函数一样被定义和调用,但是有函数的功能,也有参数,返回值这些信息,比函数更加简洁。Java 8中也新增了闭包,但是在Java 8以下是没有闭包的,要想实现同样的功能需要接口。 下面以sort为例来介绍Java和Swift不使用闭包来实现排序的方法,先看Java的: public static原创 2016-03-31 01:21:55 · 1819 阅读 · 0 评论 -
对照Java学习Swift--控制流(Control Flow)
Java和Swift的大部分控制语句是一样,但是也有些不一样,Java中关键字后面如果不止一个变量,则需要用括号括起来,Swift则不需要,下面我们来详细看看各个控制流语句。For-In这是Swift里面特有的控制流语句,在Java之中是没有的,但是Java之中有个foreach语句,算是跟这个比较像。用法很简单,循环来遍历一个集合里面的所有元素:for index in 1...5 { p原创 2016-03-18 23:57:32 · 1152 阅读 · 0 评论 -
对照Java学习Swift--函数(Functions)
Java里面的函数和方法分的不是那么清,统一叫方法,因为Java里面所有的方法必须写在类中,Swift则不然,可以不写在类,被单独放在外面,这也许是Swift对函数和方法的区分吧。Java的方法和Swift的函数大体上差不多,但是灵活很多。下面我列出Swift函数的主要特点,并指出与Java的不同。函数的定义与调用当你定义一个函数时,你可以定义一个或多个有名字和类型的值,作为函数的输入(称为参数,p原创 2016-03-19 10:36:26 · 833 阅读 · 0 评论 -
对照Java学习Swift--枚举(Enumerations)
Java之中也有枚举这个类型,但是用的好像不是很多,很多地方都是用整形来处理,在Java 5.0才引进枚举,好像在非JIT的虚拟机中,会引起非常大的内存和性能损失,不过现代JVM已经不存在这个问题了。 我们主要来看看Swift的枚举类型。枚举语法使用enum关键词来创建枚举并且把它们的整个定义放在一对大括号内:enum SomeEnumeration { // 枚举定义放在这里}例如:e原创 2016-03-31 23:41:58 · 1007 阅读 · 0 评论 -
swift 2.0改变的部分
String.toInt()不能用了,用Int(String)代替println()不能用了,只能使用print()原创 2016-03-13 17:38:59 · 500 阅读 · 0 评论 -
对照Java学习Swift--基础部分
基本数据类型Java中有八种基本类型,分别为byte、short、int、long、float、double、boolean、char,基本数据类型关键字首字母小写,每种数据类型所占用大小是固定,不随机器结构的变化而变化。 Swift基本类型有Int、Float、Double、Boolean,其中Int又分为8,16,32和64位的有符号和无符号整数类型,分别为Int8、Int16、Int32、I原创 2016-03-13 19:07:47 · 1109 阅读 · 0 评论 -
对照Java学习Swift--基本运算符
swift和Java都有的运算符赋值运算符(=)算术运算符(+,-,*,/)求余运算符(%)自增和自减运算(++,–)一元负号运算符(-)一元正号运算符(+)组合赋值运算符(+=等)比较运算符(==,!=,>,<,>=,<=)三目运算符逻辑运算(!,&&,||)这十种运算符跟Java是一样的,我们不用去怎么学习他,但是Swift特有Java没有的运算符:空合运算符(Nil Co原创 2016-03-14 15:20:36 · 824 阅读 · 0 评论 -
对照Java学习Swift--字符串和字符
swift和Java都有字符串和字符,都支持Unicode编码,但是貌似swift的更加强大,连emoji都支持,好像Java不支持,这个我不确定有没有其他变通的方法来支持。都是用双引号来表示字符串,但是字符就不一样了。 Java用单引号:char c = 'a';swift用也是用双引号:let exclamationMark: Character = "a"但是在swift中,如果我们不什么类原创 2016-03-15 17:14:41 · 775 阅读 · 0 评论 -
对照Java学习Swift--类和结构体(Classes and Structures)
这一点上Java跟Swift不一样,Java中以类为主体,所有的代码都有写在类中,Swift可以写在外面,Java中干脆就舍去了结构体这个概念,Swift中依然保留了结构体,而且Swift大量的基本类型都是由结构体来实现的,比如String,Array和Dictionary类型均以结构体的形式实现的,这些基础类型都是值类型,在传递的过程中都是复制的,类是引用类型,在传递的过程中只复制引用,引用所指向原创 2016-04-28 01:48:07 · 784 阅读 · 0 评论 -
对照Java学习Swift--错误处理(Error Handling)
简介在异常处理方面,Java跟Swift很相似,要么抛出异常,要么自己处理异常,但是语法有些不太一样。抛出异常Java跟Swift都是用throws关键字,Java在小括号的后面,大括号的前面,Swift在返回值箭头的前面。自己处理异常Java使用try catch结构,Swift使用do-catch结构,同样可以匹配多个catch块。java中的catch块要么是系统提供的,要么是自定义的异原创 2016-05-11 00:27:48 · 2735 阅读 · 0 评论 -
对照Java学习Swift--可选链式调用(Optional Chaining)
可选链式调用(Optional Chaining)是一种可以在当前值可能为nil的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是nil,那么调用将返回nil。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为nil,整个调用链都会失败,即返回nil。swift这个功能设计的很好,不会报空指针异常,如果是在Java中,那个环节的对象为空,则报空指针异原创 2016-05-10 00:52:53 · 4205 阅读 · 0 评论