如何使用字面量将number转int,不用intvalue 用法

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&& & 今天整理一下关于Objective-C Literals的内容,Literals翻译成字面量或者字面值,就是直接被写到源代码中的值。这不是一个陌生的概念,我们在写程序的时候能频繁的见到。我们很早就见过NSString 字面量了:
*greeting = @"Hello World";
& & 它的语法很简单,上面的代码就是通过在C字符串的前面加上@符号创建了一个NSString对象greeting,整段代码看起来简洁易懂,如果没有直接量语法,那么创建这个greeting可能就要使用下面的方法了:
NSString *greeting = [NSString stringWithUTF8String:"Hello World"];
& &&在Xcode4.4和LLVM4.0之后,一些新特性被提出来,其中一个就是对NSNumber、NSArray和NSDictionary使用字面量语法。
& & NSNumber
& & 在新特性提出来之前,我们要创建的一个NSNumber对象可能是这样的:
*aNumber = [NSNumber
numberWithInt:22];
& & 那么现在就可以这样写:
*aNumber = @22;
& & 当然这里不仅对于 -numberWithInt:适用,对于其他的也同样适用:
//不用字面量的方式:
NSNumber *aBool = [NSNumber numberWithBool:YES];
NSNumber *aChar = [NSNumber numberWithChar:'a'];
NSNumber *aUnsigned = [NSNumber numberWithUnsignedInt:22U];
NSNumber *aLong = [NSNumber numberWithLong:27L];
NSNumber *aFloat = [NSNumber numberWithFloat:3.14F];
NSNumber *aDouble = [NSNumber numberWithDouble:3.14];
//字面量的写法
NSNumber *aBool = @YES;
NSNumber *aChar = @'a';
NSNumber *aUnsigned = @22U;
NSNumber *aLong = @27L
NSNumber *aFloat = @3.14F;
NSNumber *aDouble = @3.14;
除此之外,你还可以用表达式: NSNumber *result = @(2+3*4);
& &&NSArray
& & 不使用字面量语法的时候,创建一个数组通常是这样的:
NSArray *aArray = [NSArray arrayWithObjects: [NSNumber numberWithInt:22], @"kuntzuo", @"hello", nil];
& & 而有了字面量语法之后,就可以这样写:
NSArray *aArray = @[@22, @"kuntzuo", @"hello"];
& & 创建数组的字面量的方式变得更加简洁了,在方括号前面加上字面量 ,里面写上内容,而且不再需要nil作为结束标志了,如果没有去掉nil会得一个警告,运行时会报错。
& && NSDictionary
& & &创建一个NSDictionary的传统方式是这样:
NSArray *keys
= [NSArray arrayWithObjects:@"Name", @"Sex", @"Age", nil];
NSArray *objects = [NSArray arrayWithObjects:@"kuntzuo", @"男", [NSNumber numberWithInt:22], nil];
NSDictionary *myProfile = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSDictionary *myProfile = [NSDictionary dictionaryWithObjectsAndKeys:
@"kuntzuo ", @"Name",
@"男 ", @"Sex",
[NSNumber numberWithInt:22], @"Age",
& & &以上两种方法看起来都不简单,而且容易混乱。字面量语法给我们更好的可选项,看看下面写法:
NSDictionary *myProfile = @{"Name":"kuntzuo","Sex":"男","Age":@22};
& & &写起来方便看起来爽有木有,这样的形式看起来是不是很熟悉呢?像JavaScript的对象?像JSON?反正我觉得方便很多啦。
& & &除了用字面量来创建NSArray、NSNumber、NSDictionary之外。如果集合是可变类型如
NSMutableArray、NSMutableDictionary,新特性还允许你用下标的方式来访问和修改集合中的值。下面的代码简单演示了这一特性。
//对于上面的NSArray *aArray
NSArray *aArray = @[@22, @"kuntzuo", @"hello"];
NSMutableArray *mutableArray = [@[@22, @"kuntzuo", @"hello"] mutableCopy];
//传统访问方式
NSString *greeting = [mutableArray objectAtIndex:2]; //"hello"
//新方法访问
NSString *greeting = mutableArray[2]; // "hello"
//新方法修改
mutableArray[2] = @"hello world";
//对于上面的NSDictionary
NSDictionary *myProfile = @{"Name":"kuntzuo","Sex":"男","Age":@22}
NSMutableDictionary *mutableDic = [myProfile mutableCopy];
//传统访问方式
NSString *name = [mutableDic objectForKey:@"Name"]; // "kuntzuo"
//新方法访问
NSString *myName = mutableDic[@"Name"];//"kuntzuo"
//新方法修改
mutableDic[@"Name"] = @"kuntian zuo";
& & 这就是我所了解的Literals的全部内容,虽然现在也不算新东西了,不过我们掌握它还是很有必要的,既方便我们写代码,也可以是代码的可读性更高,风格更好。
我没有验证过关于这种语法的执行效率问题。看到你的评论后我也查找了一些文档都没有提及效率问题。如果你找到了这方面的资料,告诉我呀 哈哈
谢谢支持!:)
嗯 谢谢你的提醒,我写错了,这里必须是NSMutable的。原文已修改
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区java怎样将BigInteger类型的数据转成int行的?_百度知道解决Java中int不能为空而Oracle数据库中Number可以的问题_数据库技术_Linux公社-Linux系统门户网站
你好,游客
解决Java中int不能为空而Oracle数据库中Number可以的问题
来源:Linux社区&
作者:pairsfish
前言:空(NULL)和零(0)一样吗?当然不。Null表示不存在或不确定,0表示没有。在应用Hibernate开发中遇到了一个问题:数据库中某字段(Number类型)没有值(即NULL),其映射的JavaBean对应属性为int类型。在获取数据时,提示&将NULL值赋给基本类型失败&的错误。怎么解决呢?对我这个.NET转Java的新手来说还真有点晕。
1.先来谈谈int和Integer
int永远也不会为空,因为它是primitive数据类型。初始时缺省为0,而不是null。Integer是对象类,倒可能是null。
因此int i1;Integer i2;
此时i1==0& 为truei2==0& 会出错吧i2==null为true
2.修改int为Integer的解决方案
将配置文件改为:&property name="a252" type="java.lang.Integer"&
JavaBean中做以下修改:
public void setA252(Integer a252) {& if(a252 != null){& &this.a252 = a252;& }& else{& &this.a252 = 0;& }&}
3.JDBC的解决方案
String result = rs.getString(1);
if (result != null){a252 = Integer.parseInt(result);}else{a252 = 0;}
4.装箱、拆箱及其他
类型转换是在1.5中才有的。在明白怎么进行判断之前,我们必须明白所谓的类型转换到底是什么东西。在1.5之前,你如果需要把一个int转换为Integer,你就必须做new Integer(intValue);这样的代码工作。因此在1.5中,Java的缔造者们认为这种方法过于低效率,因此引入了C#中的auto-boxing理念,因此你可以用类型转换的方法创造出一个Integer类实例。但是,其中的原理还是和以前一致的。因为在int类型中,永远不可能有null的取值,因此也不可能生成一个null的Integer对象。
另外可以强制转换下,也就是 (Object)int x ==
相关资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款BLOCK/字面量(语法糖)OC——第六天
<span STYLE="line-height: 1.、//block
,块语法,实质是匿名函数,是对C语言中函数的扩充,扩展;
&&//block&
语法可以用来保存一段代码或者用来调用一段封装好的代码;
&&//block&
语法由于是C语言实现的,所以执行效率特别高;
语法由来,借鉴了函数指针的语法
的数据类型
返回值类型(^)(参数类型1,参数类型2,。。。。);
&&注意:1.如果要定义的block没有参数,()也不能省掉
2.参数名可以省略,但是参数类型必须保留
3.四种类型:无返无参,。。。等;
3、定义block变量的格式
返回值类型 (^block变量名)(参数类型1,参数类型2,);
& &&void(^myBlock)();
&&//无返有参的block
& &&void(^myBlock1)(int,int);
&&//有返无参
int(^myBlock2)();
& &&int(^myBlock2)();
&&//有返有参
& int (^)(int,int);
& &&int&(^myBlock3)(int,int);
4、给block变量赋值(block的实现)
& 给block变量赋值的格式:
^(参数类型1,参数名1,参数类型2,参数名2,...)
& 执行代码;
&&注意:&&
1.此时参数名不能省略
2.如果block有返回值需要使用return返回数据
3.有大括号需要加分号(;)
5、block的调用
&&//格式:block变量名(实参1,实参2,...);
赋值的时候block块中代码不执行,只有当block调用的时候block块中的代码才执行
6、例子:写一个有返回值类型的整型,参数为NSString
类型的,实现字符串数字转为整型数据
& &&int&(^changeBlock)(NSString&*)
=& ^(NSString&*
intString){
&&return&[intString&&intValue];
& & result =
changeBlock(@"12333");
& &&NSLog(@"%d",result);
7、给block数据类型起别名
& &&typedef&int(^BLOCK3)
(int&,int);
& &&BLOCK3&b1 =
^(int&a,int&b){
&&return&a %
& &&NSLog(@"%d",b1(<span STYLE="line-height: 1.,<span STYLE="line-height: 1.));
8、使用block
需要注意的问题
&&&// block块中
可以直接访问,但不能修改
=&<span STYLE="line-height: 1.;
& &&BLOCK&b5 =
& c ++; & &
&&NSLog(@"%d",c);
//block块中可以直接访问全局变量也能修改全局变量
& &&BLOCK&b6 =
&&NSLog(@"%d",d);
作者:韩俊强
新浪微博://profile?topnav=1&wvr=6
<span STYLE="color: rgb(255, 0, 0); line-height: 1.、如果非要修改局部变量值,此时在定义局部变量时,需要再变量类型前就加上__block修饰(两次下划线)
&&&__block&int&a
=&<span STYLE="line-height: 1.;
& &&BLOCK&b7 =
&&NSLog(@"%d",a);
10、block 作为方法的参数
&&NSArray&*numberArr =
[NSArray&arrayWithObjects:@"1",@"5",@"8",@"3",&@"4",nil];
& &&NSArray&*sortArr
=& [numberArr&sortedArrayUsingSelector:@selector(compare:)];
& &&NSLog(@"%@",sortArr);
&&//谁调用这个方法(obj1,obj2)就指这个数组相邻的两个元素
&&//系统同sortedArrayUsingComparator:
排序时,根据block
参数的返回值NSOrderedDescending所对应的判断情况为准;让相邻的两个元素完成交换
&&NSArray&*sortArr2
[numberArr&sortedArrayUsingComparator:^NSComparisonResult(id&obj1,&id&obj2)
&&//NSOrderedDescending、、NSOrderedAscending谁在前就按照谁的规则排序
& &&if&([obj1&intValue]
& [obj2&intValue]) {
&&return&NSOrderedDescending;
& & }else&if([obj1&intValue]
& [obj2&intValue]){
&&return&NSOrderedAscending;
& & }else{
&&return&NSOrderedSame;
&NSLog(@"%@",sortArr2);
==========================================================
12、字面量(语法糖)是一种简易的表达值的方式
&&//NSNumber的语法糖
&&NSNumber&*intNumber =
[NSNumber&numberWithInt:<span STYLE="line-height: 1.0];
& &&NSNumber&*intNumber2
&&&//不可变字符串的语法糖
& &&NSString&*string
=&@"hanjunqiang";
&&//可变字符串的语法糖
&&NSMutableString&*mString
=&@"大爱中华".mutableCopy;//后缀不能丢
&&//不可变数组的语法糖
& &&NSArray&*array
=&@[@"1",@"2",@"3",@"4"];
& &&NSLog(@"%@",array);
&&//访问数组元素的语法糖
& &&NSLog(@"%@",array[<span STYLE="line-height: 1.]);
&&//可变数组的语法糖
&&NSMutableArray&*mArray
=&@[@"1",@"2",@"3",@"4"].mutableCopy;
&&//字典的语法糖
&&//字典对象[key值]取出对应的value值
&&NSDictionary&*dict
=&@{@"a":@"1",@"b":@"2"};//key值在冒号前,value值在冒号后
& &&NSLog(@"%@",dict);
& &&NSLog(@"%@",dict[@"a"]);
&//可变字典可以赋值和修改值
&&NSMutableDictionary&*mDic
=&@{@"a":@"1",@"b":@"2"}.mutableCopy;
& & mDic[@"a"]=@"100";
& &&NSLog(@"%@",mDic[@"a"]);
欢迎分享笔记,转发分享请标注出处!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 intvalue 用法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信