1.2定义和理解变量

定义和理解变量

所有的现代编程语言,包括Objective-C中,有变量的概念。变量是简单的别名,在存储器中的位置。每个变量具有以下属性:
1,一种数据类型,它可以是一个原始的,如整数,或者是一个对象
2,名称
3:值。
你并不总是需要设置的变量值,但是你需要指定它的类型和它的名字。下面是你需要知道的关于编写任何典型的iOS应用程序时的几个数据类型:

Mutable Versus Immutable可变vs不可变

如果数据类型是可变的,你可以,如果它被初始化后更改。例如,你可以在一个可变数组改变其中一个值,或添加或删除值。相反,你必须提供值,当你初始化一个不可改变数据类型,并不能增加它们,删除它们,或在以后更改它们。不可改变的类型是有用因为它们是更有效的,并且因为它们可以防止错误时的值是为了在整个数据的寿命保持不变。
NSInteger和NSUInteger
这种类型的变量可以保存的积分值,如10,20,等等。NSInteger的类型允许负值以及正值,但NSUInteger数据类型是无符号类型,因此将U在其名称中。请记住,无符号编程语言在数字的上下文语总是意味着数不得为负。只有签名的数据类型可以容纳负数。
CGFloat
持有带小数点浮点变数,如1.31或2.40。
的NSString
允许你存储的字符的字符串。稍后我们会看到这样的例子。
的NSNumber
允许你存储的数字为对象。
ID
id类型的变量可以指向任何类型的任何对象。这些被称为无类型的对象。每当你想从一个地方传递一个对象到另一个对象,但不希望指定其类型不管什么原因,你可以把这个数据类型的优势。
NSDictionary中和的NSMutableDictionary
这是哈希表的可变和不可变的变体。哈希表可以让你存储一个密钥和一个值相关联的键,比如一个名为phone_num主要有参照与之相关联的密钥读取的值的值05552487700.。
的NSArray和NSMutableArray的
对象的不可变的和可变的数组。数组是项目的有序集合。例如,您可能必须要在内存中存储10的字符串对象。数组可能是一个好去处。
NSSet,的NSMutableSet,NSOrderedSet,NSMutableOrderedSet
集是一样的,因为它们可以容纳一系列的对象阵列,但它们从阵列的区别在于它们包含唯一的对象。阵列可以容纳相同的对象多倍,但一组可以包含一个对象的一个实例。我鼓励你去学习数组和集合之间的区别,并适当地使用它们。

NSData和NSMutableData
可变和不可变容器的任何数据。这些数据类型是完美的,当你要读取一个文件的内容,例如,到内存中。
一些我们讲的数据类型是原始的,有些是类。你只需要记住哪个是哪个。例如,NSInteger的是一种基本数据类型,但NSString的是一类,所以对象可以被实例化它。 Objective-C中,如C和C+ +,具有指针的概念。指针是存储在那里的真实数据被存储在存储器地址的数据类型。你现在应该知道指针类表示使用星号标志:

NSString *myString = @"Objective-C is great!";

因此,当你要分配一个字符串类型的NSString在Objective-C中的变量,你只需要在数据存储到类型的NSString的指针*。但是,如果你是要一个浮点值存储到一个变量,你不会将它指定为指针,因为该变量的数据类型不是类:

    /* Set the myFloat variable to PI */
      CGFloat myFloat = M_PI;

如果你想有一个指向浮点变量,你可以这样做,如下所示:

/* Set the myFloat variable to PI /*创建一个指向myFloat变量的指针变量*/*/
CGFloat myFloat = M_PI;
/* Create a pointer variable that points to the myFloat variable */

    CGFloat *pointerFloat = &myFloat;

从原来的浮动获取的数据是一个简单的解引用(myFloat),而通过该指针获得的值需要使用星号(* pointerFloat)的。该指针可以在某些情况下,例如当你调用一个函数,设置一个浮点参数的值是有用的,你要检索的函数返回后的新值。
回去上课,我们可能不得不谈一点关于类的东西迷失在翻译之前,让我们做下一个。

时间: 2024-12-17 04:15:15

1.2定义和理解变量的相关文章

用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量.<s:iterator>标签有一个value属性,用来存放在Action类的方法中存数据的list集合,还有一个id,好像是说指定集合的索引的意思,就是给list集合遍历出来的每个对象加上一个数字标签,反正我是这么理解的,没用过.还有一个很重要,就是var变量,我在s:iterator按ctr

为什么要定义两个变量进行快速排序

哪里都有讲快速排序的,啥的,我也看了很多篇别人写的文章.但是好多文章里面都是直接就说拿两个i,j变量,就开始比较了. 快速排序,简单的说就是,先确定一个基准,然后就把比这个基准大的放到一边,比这个基准小的放到一边.放到一边的时候,是不管它是有序还是无序的.接下来在把之前的操作重复一下,其实就是一个递归的过程. 为什么要定义两个变量进行快速排序呢? 其实是这样的,快速排序,为啥叫快速排序呢,快在哪里,快在它减少了交换次数,还有一个原因就是快速排序是在快速排序是不用新开内存的,可以减少内存的使用.它

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承.(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承. 分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量

软件架构的定义及其理解

一.定义 所谓软件架构,指的是软件系统的整体结构,包括软件子元素,这些元素的外部属性以及元素元素之间的关系. 这个定义包含了以下三层意思: (1)软件架构是对系统的抽象.它不仅规定了系统有哪些主要软件元素或模块,还定义了这些元素之间是如何交互的.它并不暴露每个元素的内部属性(也叫局部信息),也就是说每个子模块的私有信息是不划归到软件架构的范畴的.需要注意的是,每个元素的外部属性依然是软件架构的一部分.这里所谓的外部属性,指的是一个元素对其他元素所承担的责任实体,包括:提供的服务,所需的服务,性能

【转】shell 教程——06 Shell变量:Shell变量的定义、删除变量、只读变量、变量类型

Shell支持自定义变量. 定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字(可用help命令查看保留关键字). 变量定义举例: myUrl="http://see.xidian.edu.cn/cp

为什么结构体一般定义成指针变量?

#include<stdlib.h> #include<string.h> #define MAX 16 typedef struct { int data[MAX]; int length; }SqList; void init(SqList *L) { SqList *L2; int i = 0; L2 = (SqList *)malloc(sizeof(SqList)); L2->length = 10; for (; i < L2->length; i++

bool? 什么意思 bool? isTrue;表示 bool isTrue = null ; 定义并给变量赋值为null;

bool?  什么意思   bool?  isTrue:表示 bool isTrue = null :  定义并给变量赋值为null: 解释见查看MSDN: https://msdn.microsoft.com/zh-cn/library/bb384091(v=VS.90).aspx 如何:从 bool? 安全地强制转换为 bool(C# 编程指南) Visual Studio 2008 其他版本 更新:2007 年 11 月 bool? 可以为 null 的类型可以包含三个不同的值:true.

TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值—Jason niu

#TF:TF定义两个变量相乘之placeholder先hold类似变量+feed_dict最后外界传入值 import tensorflow as tf input1 = tf.placeholder(tf.float32) #TF一般只能处理float32的数据类型 input2 = tf.placeholder(tf.float32) #ouput = tf.mul(input1, input2) ouput = tf.multiply(input1, input2) #定义两个变量相乘 w

对声明和定义的理解

可以先看看这篇博客. 一个变量或函数可以被声明无数次,但是却至多只能被定义一次,且在该变量或函数在使用时,必须被定义一次.(若该函数/变量不被使用,则可以只声明不定义) 一.判断一条语句是否为变量的声明:若变量前有extern关键字,则它为声明,若变量前没有extern关键字,则其为定义: extern int i; //声明i int i; //定义i,但未对i进行初始化 int i = 5; //是一个定义,同时对i进行了初始化. 总之:判断一条语句是否为声明的声明,关键是看该语句中是否包含