// swift中导入类库使用import,不再使用<>和""
import Foundation

// 输出
print("Hello, World!")

// MARK: - 定义常量、变量
// 定义常量(使用完第一次就不能修改它了)
let myGender = "男"

// 定义变量
var carName = "BMW"
carName = "Audi"
print(carName)

// MARK: - 定义常量变量:变量类型的隐式转换
// 在swift中如果定义一个常量变量不给定相关的类型,它会隐式转换成你给定的初始值类型
let name = "Jack"   // 如果这样定义出来一个常量,它会隐式转换成String类型
let name1 : String = "Rose"   // 如果给定类型,后边赋值的时候需要根据类型进行赋值
let age : Int = 18  // 如果定义常量最好给出初始值,定义变量可以不给初始值

var age1 : Int?  // 表示age1的类型是可选类型,其值可以为空
print(age1)

// 定义一个字符类型的变量
var ch : Character = "A"   // 赋值字符类型的时候仅需一个字母即可

// 定义一个BOOL类型的变量(在swift中BOOL类型的变量只有true和false)
var flag : Bool = true

// MARK: - 字符串String
// 1.创建一个空的字符串
var str_empty = ""
var str1_empty = String()

// 2.判断一个字符串是否为空
if str_empty.isEmpty {
    print("str_empty为空字符串")
}

// 3.字符串的拼接
var str1 = "http://"
var str2 = "www.baidu.com"
let str_New = str1 + str2
print(str_New)
print("百度网址:\(str_New)")   // \(变量名)输出相关的内容【插入式取值】

// 4.获取字符串长度
var str3 : String = "abcdef"
print(str3.characters.count)
print("此字符串的长度:\(str3.characters.count)")

// 5.字符串的比较
var str4 = "wangcai"
var str5 = "xiaoqiang"

if str4 == str5 {
    print("两个字符串相等")
}

if str4 != str5 {
    print("两个字符串不相等")
}

// 截取字符串
var str6 = (str5 as NSString).substringWithRange(NSMakeRange(2, 4))

// MARK: - 数组
// swift中数组中的元素类型必须相同
// 定义一个数组
var nameArray = ["yuanyuan", "fangfang", "yaoyao"]
print(nameArray)

var nameArray1 : Array<String> = ["weizhuang", "genie", "tianming"]
print(nameArray1)

// 定义一个空数组(字符串)
let array = Array<String>()
print(array)

// 访问数组中的元素
print(nameArray1[1])

// 向数组中添加元素
var int_array = Array<Int>()
int_array.append(18)
int_array.append(20)
print(int_array)

// 使用运算符添加数组元素
int_array += [30]
int_array += [25]
print(int_array)

// 使用运算符添加多个元素
int_array += [40, 50, 60]
print(int_array)

// 插入元素到具体的位置
int_array.insert(99, atIndex: 1)
print(int_array)

// 移除某个元素
int_array.removeAtIndex(3)
print(int_array)

// 移除所有元素
int_array.removeAll()
print(int_array)

// 移除某个范围内的元素
int_array.removeRange(2...5)
print(int_array)

// MARK: - 字典
// 定义一个字典类型的变量
var dic : Dictionary<String, Int> = ["a" : 18, "b" : 20]
print(dic)

// 定义空字典
var dic1 : Dictionary<String, Int> = [:]
var dic2 = Dictionary<String, Int>()
print(dic1,dic2)

// 向字典中插入一个键值对
dic ["c"] = 23
print(dic)

// 修改字典中的内容(根据键去修改)
dic["a"] = 15
print(dic)

// 输出字典中的某个键对应的值
print(dic["c"])

// 删除字典中内容(根据键去删除)
dic.removeValueForKey("b")
print(dic)

// MARK: - 元组
// 定义一个元组
// 方法一:直接初始化一个元组(使用swift隐式转换的特点)
let tuples = ("研14", ["iOS", "html5", "Android"])
print(tuples)

// 方法二:显示初始化的方式
let tuplesNew : (String, Array) = ("研15", ["盖聂", "卫庄", "天明"])
print(tuplesNew)

// 取出元组中的值
// 第一种取值方式:直接把元组赋值给另一个常量,根据相关标记进行取值
let tuplesNew1 : (classroom : String, name : Array) = tuplesNew;
var classInfo1 = tuplesNew1.classroom + tuplesNew1.name[0] + tuplesNew1.name[1] + tuplesNew1.name[2];
print(classInfo1)

// 第二种取值方式:直接根据下标进行取值
var classInfo2 = tuplesNew.0 + tuplesNew.1[0] + tuplesNew.1[1] + tuplesNew.1[2]
print(classInfo2)

// MARK: - 循环
// 第一种形式:
for var i = 1; i < 10; i++ {
    print(i)
}

// 第二种形式
for number in 1..<10 {
    print(number)
}

// 第三种形式
for number in 1...10 {
    print(number)
}

// while循环和repeat...while
var i = 8
while i > 0 {
    i--
    print(i)
}

repeat { // 先执行一次循环体,再进行相关的循环
    print("我爱你们")
}while 1 < 0

// 使用循环遍历数组
var animalArray = ["dog", "pig", "cat", "tiger"]
for animal in animalArray {
    print(animal)
}

// 使用循环遍历字典
var animalDict = ["dog" : "

Swift_1基础的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. DBA数据库:MySQL简述

    一. 数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数 ...

  2. [Android Tips] 22. Available Java 7 Features in Android

    This only allows Java 7 language features, and you can hardly benefit from anything since a half of ...

  3. length属性,length()方法和size()的方法的区别

    一.java 1.length属性是针对Java中的数组来说的,要求数组的长度可以用其length属性: 2.length()方法是针对字符串来说的,要求一个字符串的长度就要用到它的length()方 ...

  4. Java网络编程之流——readline()方法的bug

    readline()方法有一个隐含的bug,它不一定会把一个回车看作行的结束.相反,readline()只识别换行或回车/换行对.当在流中检测到回车时,readline()会在继续之前等待,查看下一个 ...

  5. html5开发移动页面去掉点击出现的透明阴影----&&-----元素垂直居中

    [摘要:做好的页里正在脚机端测试时,发明局部扫瞄器,tap后会涌现一个半通明的灰色配景,(被批...),起先认为是outline作祟,减上后发明出反映,末了发明是tap后的配景下明,要重设那个]   ...

  6. jexus部署ASP.NET MVC网站

    1.新建项目,我这里新建的空项目中的MCV 2.用nuget删除这两个类库 Microsoft.CodeDom.Providers.DotNetCompilerPlatform Microsoft.N ...

  7. h5视频上传之前端视频压缩研究

    今天领导接到一个h5上传手机视频的需求,主要是要看用户在这个视频中有没有完成某个任务,比如投篮进了几个球. 但是由于手机拍摄的视频文件大小有点大,直接上传的话,用户流量顶不住,而且特别耗时,在这样的情 ...

  8. Java比C++好在哪儿?

    1.内外局部变量,不允许重名,避免了C++的那种混淆. 2.语言层面支持多线程,大幅减少了线程同步所需的代码量. 3.匿名类,匿名函数,可以作为参数直接写在参数所需要的位置,而不需要在其它地方再定义实 ...

  9. Xubuntu VNC Xfce4

    sudo mousepad ~/.vnc/xstartup #!/bin/sh # Uncomment the following two lines for normal desktop: unse ...

  10. windows下jenkins常见问题填坑

    没有什么高深的东西,1 2天的时间大多数人都能自己摸索出来,这里将自己遇到过的问题分享出来避免其他同学再一次挖坑. 目录 1. 主从节点 2. Nuget自动包还原 3. powershell部署 4 ...