==========================

面向对象编程进阶和字符串

==========================

Δ一.类的设计模式—单例

【单例】程序允许过程中,有且仅有一块内存空间存在,这种类的设计模式成为单例

【问】什么时候用到单例

【答】数据共享的时候

1.单例的书写格式

以+(加号)开头的方法,可以直接被类调用;-(减号)开头方法 ,是对象方法,用对象来调用;

2.认识单例

【见singleDemo】

【注】单例方法名字随便起,但是尽量保证见名知意!

练习1:创建一个单例类single,有一个typeid属性。 创建一个dog类,一个cat类;

要求:dog类中负责修改single类的属性值,cat负责取出typeid值。

【思考】如果不用单例,如何实现?

二.get和set方法以及.属性

练习2:创建一个cat类,代码实现get和set方法,cat类中有speed 成员变量。

要求:第一种方式用get、set方式

第二种方式用@property方式

练习3:要求练习1中的题目用@property方式修改

====================

字符串

====================

一.认识oc中的字符串

oc中以 @“” 包含的内容,是字符串;无论@“”包含了字符串的长度为多少。

【例如】:@“a”,@“123”,@“_%^&*”,

【注】c语言中字符串是用“”,oc中是用@“”

NSString

【见strDemo1】

//声明了一个类型为NSString 的字符串str

//NSString 是一个类的类型,用法跟基础类型一样

//NSString 这个类是苹果公司封装好的一个字符串类

//定义了一个str 这个对象变量,给赋初始值为@"hello world!"

NSString* str = @"hello world!";

//c字符串

//        char a[64]="hello";

//        a[0],a[1]...

//        NSString* str1 = [[NSString alloc]initWithFormat:@"%@",str];

//        NSLog(@"%@",str1);

//求字符串长度 --- length

//oc中 常用int类型,NSUInteger不常用

NSUInteger length = [str length];

NSLog(@"%ld",length);

//∆万能拼接字符串

NSString* Str1 = @"yudejun";

NSString* Str2 = @"xijinping";

//oc 中 字符串的格式转化符是:%@

//编译器在碰到格式化转化符的时候,会自动替换成后面参数所对应的变量值

NSString* Str3 = [NSString stringWithFormat:@"%@ and %@",Str1,Str2];

NSLog(@"%@",Str3);

//【练习】

//请拼接2个字符串,第一个字符串内容为@“你好”,第二个字符串为@“中国”;拼接完成之后打印出长度

NSString* str4 = @"你好";

NSString* str5 = @"中国";

NSString* str6 = [NSString stringWithFormat:@"%@%@",str4,str5];

NSString* str6 = [NSString stringWithFormat:@“%d”,324123];

NSLog(@"%ld",[str6 length]);

//字符串的转化

NSString* StrInt = @"123456789987654321";

int a = [StrInt intValue];

NSLog(@"%d",a);

long long b = [StrInt longLongValue];

//@“0.1234”

//NSString* StrFloat = @"0.1234";

float c = [@"0.1234" floatValue];

//练习 : 计算@“1234” @“0.25” @“199” @“0.5” 这四个数的值,并打印出来

//字符串分割

//【注】字符串分割要在字符串有效长度范围内

NSString* tempStr = @"helloworld";

//        NSString* FStr = [tempStr substringFromIndex:5];

//        NSString* FStr = [tempStr substringToIndex:5];

NSRange range = {2,3};

NSString* FStr = [tempStr substringWithRange:range];

NSLog(@"%@",FStr);

//字符串的比较

NSString* tem1 = @"abc";

NSString* tem2 = @"abc";

//判断tem1 是否等于 tem2

if ([tem1 isEqualToString:tem2]) {

NSLog(@"相等");

}

else

{

NSLog(@"不相等");

}

NSComparisonResult result = [tem1 compare:tem2];

if (result == NSOrderedAscending) {

NSLog(@"tem2 > tem1");

}

else if (result == NSOrderedDescending)

{

NSLog(@"tem2 < tem1");

}else if (result == NSOrderedSame)

{

NSLog(@"tm2 == tem1");

}

//BOOL 读作布尔类型,只有2种状态,真或者假,可以用1、0也可以用yes 、no

//字符串前缀和后缀判断

NSString* string = @"http://www.baidu.com";

BOOL have = [string hasPrefix:@"http://"];

if (have == YES) {

NSLog(@"是http://开头");

}

else

{

NSLog(@"不是http://开头");

}

BOOL havejiewei = [string hasSuffix:@"com"];

if (havejiewei) {

NSLog(@"是com结尾");

}

else

{

NSLog(@"不是com结尾");

}

//转成大写

NSLog(@"%@",[string uppercaseString]);

//转成小写

[string lowercaseString];

//所有单词首字母大写

[string capitalizedString];

//查找字符串中的某个字符串,进行替换,第一个参数是要查找的字符串,第二个字符串为需要替换成的字符串

string = [string stringByReplacingOccurrencesOfString:@"www" withString:@"googl"];

NSLog(@"%@",string);

NSString* tmp = @"ceshishuju";

//=========================================

NSMutableString* m_str = [[NSMutableString alloc]initWithString:tmp];

//字符串的修改

[m_str setString:@"hello world"];

//字符串的追加

[m_str appendFormat:@" nihao"];

//字符串的删除

NSRange rang = {1,2};

[m_str deleteCharactersInRange:rang];

//字符串的插入

[m_str insertString:@"xijinping" atIndex:3];

NSLog(@"%@",m_str);

//∆以NSMutable开头的都是可变类型,以NSMutable开头定义的对象都是可以对数据进行修改;

//        NSString //不可变字符串

//        NSMutableString//可变字符串

//        NSArray// 不可变数组

//        NSMutableArray//可变数组

//        NSDictionary//不可变字典

//        NSMutableDictionary//可变字典

//可变的意思是可以对这个类型定义的变量进行修改或者删除操作

OC字符串NSString的更多相关文章

  1. OC之字符串 NSString与NSMutableString

    一.NSString 不可变字符串的操作1)将字符串常量对象直接赋值给字符串引用 NSString *str1=@"hello"; 字符串对象的输出格式:NSLog(@" ...

  2. OC 初识NSString,self关键字,继承,成员变量的可见性,description方法

    OC 初识NSString,self关键字,继承,成员变量的可见性,description方法 初识 NSString: char * string = "旭宝爱吃鱼"; 常量字符 ...

  3. oc 字符串

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  4. OC字符串的一些常用的函数。

    )//获取字符串长度 NSUInteger len= str.length; () //通过指定索引返回对应的字符 unichar ch =[str characterAtIndex:]; ()//通 ...

  5. Objective-C: 字符串NSString与NSMutableString

    字符串算是OC中非常重要和常用的一部分内容,OC中的字符串与我之前在学习C,C++,Java中的字符串有一定的不同,它非常类似于C++中容器的概念,但用法却与之还是有很大的不同,也许是因为OC的语法就 ...

  6. OC字符串常用函数

    创建一个字符串对象: NSstring * str1 = @"hello"; NSString * str = [[NSString alloc]initWithString:@& ...

  7. 14.Object-C--浅谈Foundation框架字符串NSString 与NSMutableString

    OC的字符串时经常使用到的,今天我对于OC字符串做一个简单的总结,如果有错误之处,麻烦留言指正.感谢! NSString是一个不可变长度的字符串对象.表示它初始化以后,你不能改变该变量所分配的内存中的 ...

  8. OC字符串的常用方法

    网上写的关于字符串常用方法的博客很多,这里我简单做了下总结!不喜勿喷哦! 一.创建字符串 #import <Foundation/Foundation.h> //NSString //创建 ...

  9. iOS中的字符串NSString

    创建一个字符串对象: NSstring * str1 = @"hello world"; NSString * str = [[NSString alloc]initWithStr ...

随机推荐

  1. QCustomplot使用分享(七) 层(完结)

    一.分层绘制 一直说要讲2.0.0版本,但总是想把1.3.2版本拿出来比较一下,这篇文章也不例外.QCustomPlot2.0.0beta版本比1.3.2release版本有一个很大的改进那就是分层绘 ...

  2. c#中 HttpWebRequest请求抛异常,基础连接已经关闭: 连接被意外关闭

    在用httpWebRequest模拟请求的时候有时因为服务器等方面做了请求的限制, 在请求会出现基础连接已经关闭: 接收时发生意外错误的错误 一般原因是因为服务器不允许与 Internet 资源建立持 ...

  3. [Asp.net 5] DependencyInjection项目代码分析4-微软的实现(1)

    前面俩种实现中,很多内部细节都无法知道,微软的框架也是为了屏蔽具体实现,只让我们关注接口.但是人都是充满好奇的,依赖注入到底是怎么实现的呢? 微软又有怎样的实现呢?下面就为大家一一呈现(说实话,代码真 ...

  4. ASP.NET MVC Layout 嵌套

    模板页Layout.cshtml代码(路径"~/Views/Backstage/MachineMng/Layout.cshtml"): @{ ViewBag.Title = &qu ...

  5. C#编程总结(九)字符编码

    C#编程总结(九)字符编码 相信大家一定遇到过乱码的问题,为什么会乱码呢?输出的数据怎么就跟输入的不一样呢? 最近在总结加密问题,也遇到了同样的困扰.所以今天来集中解决这个问题. 什么是字符? 字符是 ...

  6. android实现无限轮播

    1 在ViewPager的适配器中的getCount()长度设置无限大Integer.MAX_VALUE 2  明白当前currentIten 为position % images.length; 3 ...

  7. 新一代编程:scala泛函编程技术-唠叨

    准备了半年后,终于决定在这里开始我的scala编程技术学习体验撰写之旅.初步打算在这里把我学习.体验.掌握scala编程的过程与有兴趣的朋友分享.我想,虽然我这不是正式论文或者教课书之类的,但写个开场 ...

  8. SQL Server 行转列重温

    转载自http://www.cnblogs.com/kerrycode/ 行转列,列转行是我们在开发过程中经常碰到的问题.行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER ...

  9. IO碰到的问题

    1.流关了,并不代表流对象为空 可是java并没提供查看流是否关闭的方法 不过如果流已经关闭了以后,再对流进行操作的话,会抛出IOException:Stream closed异常 可以根据这个异常来 ...

  10. Android应用开发基础之十一:新特性

    Fragment 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容 生命周期方法跟Activity一致,可以理解把其为就是一个Activity 定义布局文件作为Fra ...