字面量的概念

字面量的概念_第1张图片
字面量的概念!!

前几天有一位朋友在找工作的时候面试管有问过他一个这样的问题:

请简单讲述一下字面量是什么???     在这里给大家简单讲述一下,希望有利于帮到大家!

字面量是指由字母,数字等构成的字符串或者数值,它只能作为右值出现,所谓右值是指等号右边的值,

请参考:[ http://www.jianshu.com/p/44ff0e285332 ] 装箱和拆箱,两者有相似之处

如:int a=123这里的a为左值,123为右值。

常量和变量都属于变量,只不过常量是赋过值后不能再改变的变量,而普通的变量可以再进行赋值操作

使用字面量语法可以缩减代码长度, 使其更为易读

//少用这种方式

NSNumber *someNumber0 = [NSNumber numberWithInt:1];

//多用字面数值

NSString *someString = @"Effective objectivity-C 2.0";

NSNumber *someNumber1 = @1;

NSNumber *floatNumber = @2.5f;

NSNumber *doubleNumber = @3.14159;

NSNumber *boolNumber = @YES;

NSNumber *charNumber = @'a';

//字面量语法也适用于下述表达式

int x = 5;

int y = 6;

NSNumber *expressionNumber = @(x * y);

//普通创建数组的方式

NSArray *animals = [NSArray arrayWithObjects:@"cat", @"dog", @"mouse", @"badger", nil];

//使用

NSString *dog = [animals objectAtIndex:1];

//创建字面量数组

NSArray *animals1 = @[@"cat", @"dog", @"mouse", @"badger"];

//使用

NSString *cat = animals1[0];

//如:

id object1 = @1;

id object2 = nil;

id object3 = @3;

//此数组中只有object1,因为arrayWithObjects会依次处理各个参数,直到发现nil为止

NSArray *arrayA = [NSArray arrayWithObjects:object1, object2, object3, nil];

//而object2位nil,会引发异常,向数组中插入nil通常说明程序有错,通过异常可以更快的发现这个错误

//使用字面量数组比上面的方式更安全

NSArray *arrayB = @[object1, object2, object3];

NSLog(@"%@", arrayA[1]);

NSLog(@"%@",arrayB[1]);

//字典

NSDictionary *personData = [NSDictionary dictionaryWithObjectsAndKeys:

@"Matt", @"firstName",

@"Galloway", @"lastName",

[NSNumber numberWithInt:25], @"age",

nil];

NSString *lastName = [personData objectForKey:@"lastName"];

//字面量字典

NSDictionary *personData2 = @{@"firstName" : @"Matt",

@"lastName" : @"Galloway",

@"age" : @25};

NSString *lastName2 = personData2[@"lastName"];

//可变数组字典

NSMutableArray *mutableArray = [NSMutableArray arrayWithObjects:@"a", @"b", @"c", nil];

NSMutableDictionary *mutabledictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:

@"Matt", @"firstName",

@"Galloway", @"lastName",

[NSNumber numberWithInt:25], @"age",

nil];

//可以这样操作

[mutableArray replaceObjectAtIndex:1 withObject:@"h"];

[mutabledictionary setObject:@"jeck" forKey:@"lastName"];

//也可以这样来操作

mutableArray[1] = @"h";

mutabledictionary[@"lastName"] = @"jeck";

//使用字面量语法创建出来的字符串 数组 字典对象都是不可变的(immutable)若想要可变版本的对象,则需要复制一份

NSMutableArray *mutable = [@[@1, @2, @3, @4] mutableCopy];

你可能感兴趣的:(字面量的概念)