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

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

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

2020-01-26 15:00:54
字體:
來源:轉載
供稿:網友

所有的字符串類都起源于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和""的區別)。
        看下面這段代碼: 

String str = "xxx"; String str2 = new String("xxx");System.out.println(str == str2);System.out.println(str.equals(str2)); 

結果是:
false
true

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

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

String str = "zhang"; String str2 = "peng"; String str3 = "zhangpeng"; String str4 = "zhangpeng" str += str2; System.out.println(str == str3); 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
欧美日韩在线第一页| 国产成人欧美在线观看| 亚洲美女免费精品视频在线观看| 国产精品69久久久久| 精品一区二区三区电影| 国产亚洲欧美日韩一区二区| 亚洲国产成人精品一区二区| 欧美大尺度在线观看| 国内免费久久久久久久久久久| 国产精品99久久久久久人| 国产精品久久久一区| 久久人体大胆视频| 国产精品免费电影| 在线成人一区二区| 91视频免费网站| 亚洲精品按摩视频| 91人人爽人人爽人人精88v| 国产一区二区三区在线看| 亚洲欧美激情另类校园| 亚洲天堂男人天堂| 亚洲国产成人精品电影| 日韩中文字幕av| 欧美视频一区二区三区…| 精品自拍视频在线观看| 国产91精品高潮白浆喷水| 亚洲综合中文字幕68页| 亚洲国产精品成人一区二区| 久久全国免费视频| 欧美一级大片视频| 国产成人精品一区| 成人精品aaaa网站| 亚洲欧美日韩一区二区三区在线| 亚洲精品成人久久电影| 岛国视频午夜一区免费在线观看| 欧美激情一区二区久久久| 日韩视频免费在线观看| 久久久国产91| 国产精品大片wwwwww| 亚洲女人天堂av| 中文一区二区视频| 日韩精品在线视频观看| 亚洲专区中文字幕| 欧美特级www| 亚洲a级在线观看| 岛国av一区二区在线在线观看| 欧美日韩亚洲一区二区| 中文字幕日本精品| 亚洲2020天天堂在线观看| 亚洲自拍偷拍福利| 欧美日韩精品在线观看| 欧美性jizz18性欧美| 7m精品福利视频导航| 日韩在线视频一区| 在线观看91久久久久久| 国产97在线亚洲| 亚洲精品国产精品国产自| 精品动漫一区二区三区| 成人亲热视频网站| 亚洲春色另类小说| 亚洲一区二区三区成人在线视频精品| 91在线中文字幕| 91精品视频观看| 九九视频这里只有精品| 精品国产一区二区三区在线观看| 日韩高清a**址| 国产精品久久久久久五月尺| 色综合久综合久久综合久鬼88| 亚洲精美色品网站| 日本韩国在线不卡| 国产精品中文字幕在线观看| 欧美日韩国产专区| 国产精品视频一区二区高潮| 久久人人爽亚洲精品天堂| 成人免费高清完整版在线观看| 亚洲国产成人在线视频| 国产一区二区三区视频在线观看| 日韩av电影免费观看高清| 国产精品99久久久久久久久久久久| 91av免费观看91av精品在线| 久久亚洲春色中文字幕| 国产极品jizzhd欧美| 8x拔播拔播x8国产精品| 久久人91精品久久久久久不卡| 日韩精品免费一线在线观看| 成人av资源在线播放| 久久久久久久久久久久av| 亚洲www在线| 欧美激情精品久久久久久变态| 日韩精品中文字幕在线观看| 中文字幕在线观看亚洲| 2019中文字幕在线免费观看| 欧美高清无遮挡| 亚洲国产欧美一区二区丝袜黑人| 亚洲男子天堂网| 日韩中文字幕国产精品| 国产一级揄自揄精品视频| 日韩激情av在线免费观看| 综合网日日天干夜夜久久| 法国裸体一区二区| 欧美精品制服第一页| 日韩电影在线观看免费| 成人av.网址在线网站| 色综合色综合久久综合频道88| 国产在线a不卡| 久久成人人人人精品欧| 丝袜一区二区三区| 中文字幕亚洲综合久久筱田步美| 亚洲一二在线观看| 日本一区二区三区在线播放| 亚洲专区国产精品| 欧美高清一级大片| 国产精品综合久久久| 亚洲欧洲成视频免费观看| 国产精品网红直播| 亚洲电影免费在线观看| 亚洲色图第三页| 日韩久久精品成人| 亚洲国产美女精品久久久久∴| 夜夜嗨av一区二区三区免费区| 欧洲精品在线视频| 午夜精品一区二区三区在线播放| 亚洲色图35p| 北条麻妃99精品青青久久| 国产精欧美一区二区三区| 中文一区二区视频| 成人午夜在线视频一区| 96pao国产成视频永久免费| 一区二区国产精品视频| 岛国av一区二区| 日韩在线观看免费全集电视剧网站| 欧美高清视频在线播放| 亚洲欧洲成视频免费观看| 亚洲欧美日韩图片| 亚洲成人激情图| 亚洲国产美女精品久久久久∴| 国a精品视频大全| 992tv在线成人免费观看| 亚洲欧美综合区自拍另类| 中文字幕亚洲综合久久筱田步美| 欧美国产日韩xxxxx| 91国产美女在线观看| 亚洲综合一区二区不卡| 5278欧美一区二区三区| 亚洲变态欧美另类捆绑| 麻豆精品精华液| 亚洲国产精久久久久久久| 成人精品网站在线观看| 国产日韩av在线| 亚洲电影免费观看高清完整版在线| 久久精品国产欧美亚洲人人爽| 日韩国产精品亚洲а∨天堂免| 久久久国产影院| 911国产网站尤物在线观看| 欧美多人乱p欧美4p久久| 成人在线视频网| 欧美视频国产精品| 91午夜理伦私人影院| 色婷婷久久一区二区| 亚洲性av网站| 国产91精品网站| 国产婷婷97碰碰久久人人蜜臀| 日韩久久精品成人| 日韩视频在线免费观看| 神马国产精品影院av|