数字、字符串和集合
数字对象
基本数据类型都不是对象,也就是说不能向他们发送消息。
int、NSInteger的区别
NSInteger会自动识别当前电脑系统是32位还是64位数,然后自动返回最大的类型(int还是NSInteger)。
例如,当前电脑为32位系统,你声明的NSInteger自动变为int。当前电脑为64位系统,你声明的NSInteger还是NSInteger。
备注:在多数情况下一定尽可能的使用NSInteger
NSInteger、NSUInteger的区别
NSInteger是有符号整形,即声明的变量既可以是正数也可以是负数。
NSUInteger是无符号整形,即声明的变量只能是正数,比如取值数组下标,可以使用来声明NSUInteger。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"这是一个测试数字对象的程序...");
NSNumber *myNumber, *floatNumber, *intNumber;
NSInteger myInt;
// integer 型值
intNumber = [NSNumber numberWithInteger:100];//表示创建一个值为100的整数对象
myInt = [intNumber integerValue];//获取储存在intNumber中的整形值,将她储存在NSInteger变量myInt中
NSLog(@"%li",(long)myInt);
// long 值
myNumber = [NSNumber numberWithLong:0xabcdef];
NSLog(@"%lx",[myNumber longValue]);
//char 值
myNumber = [NSNumber numberWithChar:'X'];
NSLog(@"%c",[myNumber charValue]);
// float 值
floatNumber = [NSNumber numberWithFloat:100.00];
NSLog(@"%f",[floatNumber floatValue]);
// double 值
myNumber = [NSNumber numberWithDouble:12345e+15];
NSLog(@"%lg",[myNumber doubleValue]);
//验证两个number是否相等
if([intNumber isEqualToNumber:floatNumber] == YES)
NSLog(@"相等");
else
NSLog(@"不相等");
//验证一个number是否小于、等于或大于另一个number
if([intNumber compare:myNumber] == NSOrderedAscending)
NSLog(@"第一个比第二个大");
}
return 0;
}
NSNumber 的创建、检索方法
创建和初始化方法 | 初始化实例方法 | 检索实例方法 |
---|---|---|
numberWith数据类型 | initWith数据类型 | 数据类型Value |
允许使用@表达式创建数字对象。
intNumber = [NSNumber numberWithInteger:100];//表示创建一个值为100的整数对象
intNumber = @100;//同上语句一致
字符串对象
要使用 Objective - C 语言创建一个字符串对象,需要在字符串开头放置一个 @ 字符。
NSLog函数
NSString *str = @"test1";
NSLog(@"%@",str);
字符串常量 test 被赋值给 NSString 变量 str。之后使用NSLog显示他的值。
description方法
-(NSString *) description{
return [NSString stringwithformat: @"%i/%i",fenzi,fenmu];
}
你可以使用格式化字符 %@ 显示数组、字典和集合的全部内容,事实上,通过覆盖 description方法 还可以用这些格式的字符显示你自己类的对象。
类似于 stringwithformat: 这样的方法允许提供多个参数。这些参数使用一系列逗号分隔提供给方法。
2022年9月1日
可变对象和不可变对象
创建字符串对象的时候,会创建一个内容不可更改的对象,称为不可变对象。可以使用NSString 类来处理不可变字符串。你经常需要处理字符串并更改字符串中的字符。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"这是一个测试字符串对象方法的小程序...");
NSString *str1 = @"This is string A";//创建一个字符串A
NSString *str2 = @"This is string B";//创建一个字符串B
NSString *res;
NSComparisonResult compareResult; //用于保存后面执行的字符串操作比较的结果
//计算字符串中的字符
NSLog(@"字符串A的长度:%lu",[str1 length]);
//将一个字符串复制到另一个字符串
res = [NSString stringWithString:str1];
NSLog(@"复制:%@",res);
//将一个字符串复制到另一个字符串末尾
str2 = [str1 stringByAppendingString:str2];
NSLog(@"链接: %@",str2);
//验证两个字符串是否相等
if([str1 isEqualToString:res] == YES)
NSLog(@"str1 == res");
else
NSLog(@"str1 != res");
//验证一个字符串是否小于、等于或大于另一个字符串
compareResult = [str1 compare:str2];