亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

深入解析C++和JAVA的字符串

2020-05-23 14:17:00
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++和JAVA的字符串,JAVA 中String 和StringBuffer的區別,需要的朋友可以參考下
 

所有的字符串類都起源于C語言的字符串,而C語言字符串則是字符的數組。C語言中是沒有字符串的,只有字符數組。
談一下C++的字符串:C++提供兩種字符串的表示:C風格的字符串和標準C++引入的string類型。一般建議用string類型,但是實際情況中還是要使用老式C風格的字符串。
1.C風格的字符串:C風格字符串起源于C,并在C++中得到擴展。字符串存儲在一個字符數組中,例如:
       const char *str = “zhangdan”;(不要忘掉最后的/0)
       這里用常量字符數組來表示字符串。操作字符串的時候只要操作指針就可以了。如 :
       const char * str = "zhangdan";  const char *p = str; 然后對p進行操作就可以了。
2.標準C++的string類型:如果用的話首先要引入頭文件:#include<string>
       在C++中提供的標準字符串類型提供了以下操作:
      (1).支持用字符序列或者第二個字符串去初始化一個字符串對象。C風格的字符串不支持用另外一個字符串初始化另外一個字符串。
      (2).支持字符串之間的copy,C風格字符串通過strcpy()函數來實現。
      (3).支持讀寫訪問單個字符。對于C風格的字符串,只有解除引用或者通過下標操作才能訪問單個字符。
      (4).支持兩個字符串相等比較,對于C風格的字符串,比較是通過strcmp()函數來實現的。
      (5).支持兩個字符串連接,對于C風格的字符串用strcpy() 函數copy到一個新的實例中,然后用strcat()把兩個字符串接起來。如:
       string str1 = "111111", str2 = "222222";
       string str3 = str1 + str2;
      (6).支持對字符串長度的查詢:string s ("XXXXXXX"); str.size() 為字符串的長度。
     相互轉換:const char * str = str2.c_str(); //不可把字符串類型直接賦給字符數組,但是可以吧一個字符數組賦給一個字符串類型:如:const char *str = "zhangdan"; string str2 = str;
   

C++ string類的輸入
    (1)方法一:和C字符串輸入的方法一相同。
    (2)方法二:使用getline函數。
    例如:string a;
   getline(cin,a);
  

字符串到數字的轉換
    atoi函數獲取一個C字符串參數,返回對應的int值。如果參數不與一個int值對應,atoi就會返回0。atoi函數在文件為cstdlib的庫中。如果數字太大,不能轉換成int類型的值,可以使用atol將字符串轉換為long類型的值。
   例如:
    atoi("1234");   //返回整數1234
    atoi("#123");   //返回0
   C++中字符串的常用方法就不一一介紹,介紹幾個常用的:begin(),end(),append(),等等。
  2:JAVA中的字符串:在JAVA中,String不屬于8中基本類型,所以String是對象,默認值是null
 例如:String str = new String(); 和String str =  new String("");是一個意思,就是構造一個空字符串,(理解null和""的區別)。
        看下面這段代碼: 
 

  1. String str = "xxx";  
  2. String str2 = new String("xxx"); 
  3. System.out.println(str == str2); 
  4. System.out.println(str.equals(str2));  
?

結果是:
false
true

為什么呢? 在JAVA中 == 是對地址的比較,而equals是對內容的比較,為什么地址不一樣呢?
先引入常量池的概念:

常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的.class文件中的一些數據。它包括了關于類、方法、接口等中的常量,也包括字符串常量。
當我們將一個字符串賦給一個字符串變量的時候,如String str = "xxxx"; 這時候,先去常量池中找有沒有"xxxx"的字符串拷貝,如果有的話,把str的地址指向常量池中字符串常量"xxxx"的地址,如果沒有則在常量池中建立"xxxx"的字符串常量。而 new String("xxxx")是放在堆內存中,有自己的內存空間。所以地址比較的時候不一樣。
看下面一段代碼: 
 

  1. String str = "zhang";  
  2. String str2 = "peng";  
  3. String str3 = "zhangpeng";  
  4. String str4 = "zhangpeng" 
  5. str += str2;  
  6. System.out.println(str == str3);  
  7. System.out.println(str3 == str4) 
?

結果為:
true
true

為什么呢?
首先,我們要知道Java會確保一個字符串常量只有一個拷貝。

因為例子中的str3和str4中的"zhangpeng"都是字符串常量,它們在編譯期就被確定了,所以str3==str4為true;而"zhang"和"peng"也都是字符串常量,當一個字符串由多個字符串常量連接而成時,它自己肯定也是字符串常量,所以str2也同樣在編譯期就被解析為一個字符串常量,所以str2也是常量池中"zhangpeng"的一個引用。

JAVA 中String 和StringBuffer的區別:

String:
是對象不是原始類型.
為不可變對象,一旦被創建,就不能修改它的值.
對于已經存在的String對象的修改都是重新創建一個新的對象,然后把新的值保存進去.
String 是final類,即不能被繼承.
StringBuffer:
是一個可變對象,當對他進行修改的時候不會像String那樣重新建立對象
它只能通過構造函數來建立,
StringBuffer sb = new StringBuffer();
不能通過付值符號對他進行付值. 
sb = "xxxxx";
對象被建立以后,在內存中就會分配內存空間,并初始保存一個null.向StringBuffer
中付值的時候可以通過它的append方法.
sb.append("hello");
字符串連接操作中StringBuffer的效率要比String高:
String str = new String("xxx");
str += "xx";
的處理步驟實際上是通過建立一個StringBuffer,然后調用append(),最后
再將StringBuffer toSting();
這樣的話String的連接操作就比StringBuffer多出了一些附加操作,所以就慢了

問一個問題:為什么StringBuffer效率這么高,那么我們還要String呢?
不會的查一下吧,方向是常量池。

Python 字符串:
Python是一種強大的腳本語言,它定義字符串的時候不用定義類型。python字符串通常有單引號('...')、雙引號("...")、三引號("""...""")或('''...''')包圍,三引號包含的字符串可由多行組成,一般可表示大段的敘述性字符串。在使用時基本沒有差別,但雙引號和三引號("""...""")中可以包含單引號,三引號 ('''...''')可以包含雙引號,而不需要轉義。當需要特殊轉義的時候可以用 '/'
python 也有很多字符串操作的函數。具體可以dir一把,跟C++和java都是大同小異的。

以上就是本文的全部內容,希望對大家的學習有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线日韩第一页| 久久精品国产2020观看福利| 韩国福利视频一区| 在线电影中文日韩| 国产剧情久久久久久| 精品美女久久久久久免费| 久久久欧美一区二区| 亚洲精品视频播放| 91免费看片在线| 欧美高清视频在线观看| 亚洲区免费影片| 欧美理论电影网| 中文欧美日本在线资源| 日本精品久久久| 懂色av影视一区二区三区| 伊人伊成久久人综合网小说| 少妇高潮 亚洲精品| 亚洲自拍高清视频网站| 国产精品久久久久久一区二区| 亚洲天堂av综合网| 92国产精品久久久久首页| 国产精品中文在线| 日韩欧美在线免费| 国产97色在线|日韩| 国产在线不卡精品| 久久久久亚洲精品国产| 成人激情视频小说免费下载| www国产精品com| 亚洲视频在线免费观看| 91中文精品字幕在线视频| 国产精品日韩在线观看| 亚洲电影在线观看| 亚洲毛片一区二区| 国产精品视频男人的天堂| 91精品国产色综合久久不卡98口| 成人免费在线视频网站| 日韩精品在线第一页| 中文字幕亚洲自拍| 亚洲人成五月天| 欧美日韩国产精品一区二区不卡中文| 久久精品人人做人人爽| 久久成人国产精品| 欧美电影在线观看| 亚洲精品久久久久久下一站| 欧美精品在线播放| 亚洲成人精品久久久| 欧美国产精品va在线观看| 91国产一区在线| 色综合久久久久久中文网| 亚洲综合成人婷婷小说| 欧美一级大片在线观看| 亚洲另类欧美自拍| 亚洲色图日韩av| 日韩电影中文字幕一区| 91亚洲va在线va天堂va国| 国产视频久久久久| 精品精品国产国产自在线| 热久久99这里有精品| 日韩欧亚中文在线| 在线视频欧美日韩| 日韩欧美一区二区三区| 欧美成人网在线| 精品精品国产国产自在线| 福利一区视频在线观看| 在线成人中文字幕| 国产91色在线免费| 日本久久久久久| 国产欧美日韩精品专区| 91影院在线免费观看视频| 国产噜噜噜噜噜久久久久久久久| 色综合亚洲精品激情狠狠| 国产美女久久精品香蕉69| 亚洲成人黄色在线观看| 另类美女黄大片| 亚洲黄色成人网| 91精品久久久久久久| 欧美在线视频一区| 欧美极品少妇xxxxⅹ裸体艺术| 精品亚洲男同gayvideo网站| 久久久久久网站| 日韩极品精品视频免费观看| 久久全球大尺度高清视频| 免费91麻豆精品国产自产在线观看| 欧美色另类天堂2015| 日韩欧美在线一区| 日韩av在线直播| 日韩美女写真福利在线观看| 欧美二区在线播放| 日韩激情视频在线播放| 自拍偷拍亚洲区| 97在线精品视频| 最近2019中文免费高清视频观看www99| 久久视频精品在线| 国产精品最新在线观看| 欧美成人午夜剧场免费观看| 中文字幕日韩在线视频| 国产拍精品一二三| 欧美成人免费va影院高清| 亚洲字幕一区二区| 一区二区在线视频| 88国产精品欧美一区二区三区| 亚洲精品美女在线观看播放| 欧洲成人免费视频| 久久综合免费视频影院| 久久免费国产视频| 8090成年在线看片午夜| 亚洲黄在线观看| 美乳少妇欧美精品| 日韩专区中文字幕| 精品在线观看国产| 欧美视频国产精品| 91在线高清免费观看| 亚洲欧美一区二区精品久久久| 亚洲国产日韩欧美在线图片| 亲子乱一区二区三区电影| 亚洲日韩欧美视频| 2019中文字幕在线免费观看| 国产美女久久精品| 日av在线播放中文不卡| 91精品国产91久久久久福利| 亚洲视频在线免费看| 日韩电影中文字幕一区| 国产精品一区二区久久精品| 亚洲高清久久网| 欧美另类高清videos| 成人免费观看a| 日韩中文在线视频| 亚洲综合日韩在线| 国产女同一区二区| 影音先锋欧美精品| 亚洲激情视频网站| 国产在线不卡精品| www亚洲欧美| 在线日韩av观看| 国产欧美在线观看| 日韩激情在线视频| 亚洲欧美激情四射在线日| 日韩在线资源网| 亚洲一区国产精品| 欧美日韩国产色| 欧美裸体xxxx极品少妇| 97免费中文视频在线观看| 亚洲男人天堂网站| 成人福利网站在线观看11| 欧美在线视频在线播放完整版免费观看| 久久久久久国产精品三级玉女聊斋| 国产香蕉一区二区三区在线视频| 亚洲精品国精品久久99热| 国产精品自拍网| 亚洲乱码一区二区| 国产一区二区久久精品| 国产精品欧美激情在线播放| 午夜剧场成人观在线视频免费观看| 欧美一区亚洲一区| 精品久久久久久久中文字幕| 日韩电影大片中文字幕| 国产欧美日韩91| 欧美激情在线视频二区| 亚洲第一福利在线观看| 国产经典一区二区| 亚洲性视频网址| 91久久精品美女| 亚洲人成亚洲人成在线观看| 欧美一级视频免费在线观看|