面向對象編程進階和字元串 Δ一.類的設計模式—單例 【單例】程式允許過程中,有且僅有一塊記憶體空間存在,這種類的設計模式成為單例 【問】什麼時候用到單例 【答】數據共用的時候 1.單例的書寫格式 以+(加號)開頭的方法,可以直接被類調用;-(減號)開頭方法 ,是對象方法,用對象來調用; 2.認識單例
==========================
面向對象編程進階和字元串
==========================
Δ一.類的設計模式—單例
【單例】程式允許過程中,有且僅有一塊記憶體空間存在,這種類的設計模式成為單例
【問】什麼時候用到單例
【答】數據共用的時候
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//可變字典
//可變的意思是可以對這個類型定義的變數進行修改或者刪除操作