黑马程序员_IOS开发_Objective-C学习笔记_基本数据类型

 1.数据类型和常量:

我们在做IOS程序开发的时候使用的最多的恐怕就是基本数据类型,在Objective-c中提供了4种基本的数据类型:int float double以及char.

1.1声明为int的变量只能用于保存整形值。

1.2声明为float类型的变量可存储浮点类型值(即包含小数位数).。

1.3double类型和float类型一样,只不过前者的精度大约是后者的2倍。

1.4最后是char 数据类型,char类型可用来存储单个字符,例如字母a,数字6,或是一个分号。或者通过char指针声明一个字符串,例如 char *string = "itheima"

在OC中,任何的数字、单个字符或者字符串,都称为常量。例如:数字2015为一个整数常量,字符串@"itheima HM2015!\n"表示一个常量的字符串对象。完全由常量组成的表达式我们就称为常量表达式。

所以,表达式:

2015+4-20

是一个常量表达式,这是因为其表达式的每一项都是一个常量值。但是如果把i声明为了整型的变量,那么表达式:

2015+4-i

就不是一个常量表达式了.

4种基本数据类型的介绍

2.int类型

在OC中,整数常量是又一个或多个数字的序列所组成。序列前的负号表面该值是一个负数。合法值例如:10 、-10、2015. 数字之间不能出现空格,例如22 000是一个非法的常量.

OC中存在两种特殊的格式,它们用于非十进制方式保存整数常量。第一种:如果整形值的第一位为0,那么这个整数将用八进制的方式表示,也就是说用基数8来表示。这种情况下改值的其他余位的值必须都是合法的八进制数字,即必须是0到7之间的数字。例如在OC八进制表示的值50,表示的方式为050,等价于十进制表示的值40.

同理,八进制的常量0177表示为十进制的值127,算法为1*64+7*8+7 =127.

可以通过在NSLog()中调用的格式字符串中使用格式符号%o,可在终端上用八进制显示整型值:

例:

1 int a =1772 NSLog(@"int is : %o\n",a);

在上面例子的情况下,输出的八进制值不带有前导0,输出带有0的写法如下:

1  int a = 177;2  NSLog(@"%#o",a);

第二种情况:

如果整形常量以0和字母x(x无论大写还是小写)开头,那么这个值都将采用十六进制(即以16为基数)计数法里表示。紧跟在字母x后面的是十六进制的的数字,它可由0到9之间的任意数字或a到f(A到F)之间的字母组成。字母表示的数字分别为10到15。因此,给一个名为rgbColor的整型常量指派一个十六进制的值FFEF0D,可以使用以下语句:

1 rgbColor = 0xFFEF0D;

格式符号%x表示显示一个十六进制的值,该值不会带有前导0x,都是用a--f的小写字母表示十六进制的数字,需要带有前导0x,使用格式字符%#x表示:

1 NSLog(@"%#x\n",rgbColor);

不管是字符,浮点,整数,都有与其对应的值域,这个值域与存储特定类型的值而分配到的内存量有关,一般在语言当中没有规定这个量的大小,它依托于所运行的计算机,所以叫做设备的相关量.如一个整数可在计算机上占用32位,也可以使用64位存储。

另外需要注意的是在OC中 推荐使用NSInteger来代替int,因为NSInteger会自动识别操作系统的位数,从而自动转换int为32位还是64位 而不用自己去指定,所以以后在IOS开发中,全部用NSInteger来代替int,算是一种标准的写法。

2.float类型:

float类型可包含存储小数位数的值,例如值3.、125.8以及-.0001都是合法的浮点数。显示浮点数,可以使用NSLog(@"%f",floatType)。

浮点常量也能使用科学计数法的方式来表示,值1.74e4就是一种科学计数法,他表示的是1.7乘以10的4次方。位于字母e前面的称为尾数,后面的称为指数,指数的前面可以放置正好和负号。指数表示将与尾数相乘的10的幕。因此,2.225e-3表示2.225乘以10的-3次方,值为0.00225.

3.double类型

double类型和float类型很相似,一般使用double是在float不能满足精度(即所提供的值域)的要求时候。double类型变量可存储的位数大概是float的两倍多,大多数的计算机使用64位来表示double值。注意:除非你自己声明,否则OC均把所有浮点常量看都是double值,要清楚地表示float常量,一是声明float类型,二是在数字的尾部加一个f或则F,例如:

CGSizeMake(12.5f,13f);

要显示double类型的值,可使用%f,%e,或%g,它们显示float值所用的格式是相同的.

4.char类型
     char类型可存储单个的字符。将字符放入一对括号中就可以得到字符常量。因此,‘a‘.‘3‘和‘;‘都是合法的字符常量.第一个表示字母a,第二个表示字符3,第三个表示分号。第二个并不等同于数字的3.

字符常量‘\n‘(换行符)是一个合法的字符常量。‘\’称为转义字符,用来在NSLog中输出特殊符号。因为反斜杠符号是OC中特殊符号。OC中将字符‘\n‘看作单个的字符,尽管它是由两个字符组成。

如下示例,使用了基本的数据类型:

 1 #import <Foundation/Foundation.h> 2  3 int main (int argc,char *argv[]) 4  5 { 6  7   NSAutoreleasePool *pool =[[NSAutorelelasePool alloc]init]; 8  9   int numVar =10;10 11   float floaVar =331.79;12 13   double doubleVar =9.44e+11;14 15   char charVar =‘W‘;16 17   NSLog(@"numVar:=%i",numVar);18 19   NSLog(@"floatVar:=%f",floatVar);20 21   NSLog(@"doubleVar:=%e",doubleVar );22 23   NSLog(@"doubleVar :=%g",doubleVar );24 25   NSLog(@"charVar:=%c",charVar);26 27   [pool drain];28 29    return 0;30 31 }

输出:numVar =10;

floatVar =331.790009;

doubleVar =8.440000e+11;

doubleVar =8.44e+11;

charVar =‘W‘;

注意:我们指派给floatVar的值实际上是331.79,但是为什么输出331.790009呢?实际上,显示的值是由特定的计算机系统决定的。在计算机内部使用特殊的方式管理数字。计算机在处理数字的时候,很可能会遇到不准确性,比如1除以3,计算出为3.3333333, 这一串的3实际只是一个近似值,理论上,应存在无数个3。然而计算机只能保存这些数字,这就是计算机的不确定性所致。此处应用了相同的不确定性,所以在内存中不能精确的表示一些浮点值!!

时间: 2024-10-26 09:11:52

黑马程序员_IOS开发_Objective-C学习笔记_基本数据类型的相关文章

黑马程序员_JAVA UDP网络编程学习笔记

一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的,它们构成了两个端点之间的虚拟通信链路.与TCP通信不同,UDP是面向无连接的.不可靠的基于数据包的传输协议.即应用进程(或程序)在使用UDP协议之前,不必先建立连接.自然,发送数据结束时也没有连接需要释放.因此,减少了开销和发送数据之前的延时.UDP也采用端口来区分进程. 在java中,java.

黑马程序员_IOS开发_Objective-C学习笔记_类(对象)

1.面向对象编程基本介绍: 面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法.对象指的是类的集合,类是对象的模板,它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的安全性.重用性.灵活性和扩展性. 2.面向对象与面向过程 面向过程就是分析出解决问题所需要的步骤,然后基于这些步骤用代码和函数把这些步骤一步一步实现. 面向对象是把构成问题事务分解成各个对象,然后各个对象分别对相关的程序功能做出处

黑马程序员_IOS开发_Objective-C学习笔记_NSString

NSString NSString是一个IOS OC开发中经常使用到得一个对象类型.NSString是NSObject(Foundation的基础对象)的子类,所以具有NSObject的所有特性. NS是Cocoa类对象类型的前缀,来源于乔布斯公司的操作系统的名字 NEXTSTEP 1.创建NSString对象1.1此方法不需要手动释放内存. NSString *aString = @"This is String"; //注意:这里和C语言字符串不一样,需要在头部放一个@符号 1.2

黑马程序员_IOS开发_Objective-C学习笔记_分析和调试自己的一个黑马基础测试题程序

1.程序 1.1程序介绍 从键盘输入6个字符串(仅仅包含英文字母和数字),对着6个字符串从小到大排列并输出结果.(C语言) 1.2程序设计分析 这个是我在基础测试题目环节从黑马报名系统里面下得题目. 初看题目,觉得此题不难,无非是: *建立一个字符串的数组 *然后在一个循环6次的循环体里面循环输入6次,然后再把输入的字符串放到字符串数组里面 *然后建立一个长度数组来统计相对应的字符串的长度 *最后对长度数组中的元素按大小来排序(注意:对长度数组中的元素排序的时候,同时要对字符串数组进行一样的操作

黑马程序员_IOS开发_Objective-C学习笔记_Foundation框架常用的结构体

1.Foundation框架简介 1.1使用Foundation可以: *创建和管理集合,比如数组和字典 *访问存储在应用程序里的图片和其它资源 *创建和管理字符串 *提交和接收通知 *创建日期和时间对象 *自动发现IP网络上的设备 *操作URL流 *执行异步代码 注意:Foundation框架是默认导入的 所以不用刻意去导入 是必备的框架之一 1.2Foundation框架中一些经常接触到的结构体 由于Objective-C程序中 对象的结构体成员变量中的元素 不能通过对象直接来访问 所以我们

黑马程序员_IOS开发_Objective-C学习笔记_继承和分类

1.什么是继承 继承是面向对象程序的三大特征之一,意思是基于一个类的基础,定义一个新类. 被继承的类成为父类,新类成为子类. 继承的实际例子有许多.例如,一个儿子继承了他父亲,那么他就继承了他父亲的财产. 例如基类是Person,那么我们可以继承Person这个类,产生新的子类Student,Teacher 在这里Person是Student类和Teacher类的父类. 引入继承的概念是有许多好处的: *能够抽取重复代码 *建立了类和类之间的联系 *不改变原来模型的基础上,能够扩展出新的方法 2

黑马程序员_IOS开发_Objective-C学习笔记_指针复习

1.指针 上一篇我在分析我自己写的程序错误里面发现是指针的问题,我觉得有必要在复习一下指针,毕竟指针是C语言系列的难点. 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移对指针的概念和使用越加模糊,感觉指针难以掌握,今天我就再回顾下指针的概念和使用. 2.什么是指针 指针的本质是存放变量地址的变量,简单的说变量p中存储的是变量a的地址,那么p就可以称为是变量a的指针,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对

黑马程序员_IOS开发_Objective-C学习笔记_内存管理

1.内存管理概述 1.1什么是内存管理:内存管理是程序设计中常用的资源管理的一部分,每个计算机系统可供程序使用的内存都是有限的. 1.2为什么要使用内存管理:当我们的程序运行结束的时候,操作系统将回收其我们程序占用内存.但是,只要程序还在运行,它就会一直占用内存.如果不进行及时清理不用的内存,内存最终将被耗尽.每个程序都会使用内存,我们必须确保在需要的时候分配内存,而在程序运行结束时释放占用的内存.如果我们只分配而不释放内存,将发生内存泄漏. 1.3引用计数:1.3.1只有当你对一个对象了all

黑马程序员_IOS开发_Objective-C学习笔记_NSArray/NSMutableArray

1.数组简介 NSArray:用来存储有序数组,它是不可变的(不能插入删除数据元素),也不能存储C语言中的基本数据类型(int.float.double.enum.struct),也不能存nil,如果需要使用基本数据类型,需要先转成Objective-c中的对象,用@包装下. NSMutableArray:它是可变的(可以插入删除数据元素),还能限制元素个数 capacity.当你需要对数组元素进行加减操作的时候,就需要使用NSMutableArray. 2.创建数组 //1.array NSA