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

首頁 > 編程 > Java > 正文

深入理解Java中的字符串類型

2019-11-26 15:42:25
字體:
來源:轉載
供稿:網友

1.Java內置對字符串的支持;
  所謂的內置支持,即不用像C語言通過char指針實現字符串類型,并且Java的字符串編碼是符合Unicode編碼標準,這也意味著不用像C++那樣通過使用string和wstring類實現與C語言兼容和Unicode標準。Java內部通過String類實現對字符串類型的支持。
這意味著:我們可以直接對字符串常量調用和String對象同樣的方法:


  //可以再"abc"上直接調用String對象的所有方法
  int length="abc".length();
    以及
  String abc=new String("abc");
  int length=abc.length();

2.Java中的字符串值是constant(常量的)

  這里的意思是字符串類型在創建完成之后,是不能改變其中的值的,從String的成員方法也可以看出沒有能改變值的方法接口;并且像"abc",new String("def")中的”abc","def"存放于Java虛擬機中的常量池。

以下的代碼中的"abc"存放于常量池中,因此變量a,ab指向的地址均為常量池中同一個"abc"。

復制代碼 代碼如下:

public class StringTest {
    public static void main(String[] args) {
        String a="abc";
        String ab="abc";
        String abc=new String("abc");
        System.out.println(ab==a);
        System.out.println(a==abc);
    }
}
/*程序輸出:
 * true
 * false
 * */

那么動態生成的、可變的字符串又是如何實現的呢?Java中提供StringBuffer和StringBuilder類實現這一需求;Java中字符串連接可以使用“+”操作符; 如:"abc"+"def";這里的內部實現也可以使用StringBuilder類或者StringBuffer類實現;那么StringBuilder和StringBuffer內部又是如何實現呢?是通過字符數組存儲字符串。以下是從JDK附帶的源碼中找到的片段,可以看出StringBuffer內部使用char數組對字符串進行存儲,其中的AbstractStringBuilder是StringBuffer的父類:

3.字符串中的編碼問題。
  這里要理解兩個問題:如何處理源文件中的字符串編碼?編譯成class文件或者是代碼在Java虛擬機運行時字符串是采用什么編碼的?
  第一個問題的理解是:源代碼中的字符串編碼取決于你的IDE或者文本編輯器。如以下的代碼是使用GBK編碼格式下編輯,然后使用UTF-8和GBK解碼打開
//GBK編碼格式,使用GBK格式打開

//GBK編碼格式,使用UTF-8格式打開,亂碼;如果此時系統默認的編碼格式不是GBK時,在編譯時需要在javac加入"-encoding GBK"參數選項值;

  那么如何處理這種源代碼編碼的問題呢?答案是在編譯器javac的參數選項-encoding中指定,默認這一參數的值是跟系統默認的編碼一致。Windows的默認編碼一般為GBK (可以通過System.getProperty("file.encoding")獲得該值);在系統默認編碼為GBK,但是源代碼使用UTF-8編碼,此時應該使用  javac -encoding UTF-8  進行編譯。

  對 ”編譯成class文件或者是代碼在Java虛擬機運行時字符串是采用什么編碼的?“ 這個問題的理解是:首先,Java中的String類型是采用UTF-16編碼實現的,也就是不管在源碼的編碼如何,在Java虛擬機中的字符串都是使用UTF-16編碼實現。這意味著只要編譯器javac正確的理解了源碼文件中字符串的編碼,運行時或者class字節碼文件中的字符串是獨立于源碼中的編碼格式的。這里我們可以進一步對java中的char基本類型或者Character類進行理解解,這兩者內部的編碼和java的字符串類型一樣,都是基于UTF-16編碼實現的,也就是不論‘a','1'這樣的字符還是漢字在Java中的長度都是16位。

  并且在String類型中也有著通過指定定字符編碼,對底層二進制表示和字符串之間進行轉化,也就意味著我們可以正確地讀取GBK編碼、UTF-8編碼或者其他編碼的文本文件或者其他輸入流將其轉化為內存中正確的字符串。

如String類中有如下的方法:
  public String(byte[] bytes, Charset charset);通過指定定字符集編碼類型,和相應的byte數組(byte長度為8位)構造字符串;
  public byte[] getBytes(Charset charset);指定字符集編碼類型,將字符串轉化為byte數組,即字符串的二進制表示。

還有需要注意String的另一個成員方法:

  public byte[] getBytes();這個方法返回的byte數組,所根據的字符集編碼是指平臺默認的字符集編碼,而不一定是UTF-16。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲国产成人精品| xxav国产精品美女主播| 日韩av中文字幕在线免费观看| 精品高清美女精品国产区| 国产成人精品国内自产拍免费看| 亚洲tv在线观看| 欧美成人精品一区二区| 午夜精品一区二区三区在线| 欧美成人午夜视频| 欧美激情性做爰免费视频| 亚洲第一免费播放区| 欧美电影在线免费观看网站| 国产在线拍揄自揄视频不卡99| 日韩高清免费观看| 欧美一级免费看| 最近中文字幕mv在线一区二区三区四区| 国产精品美女主播| 狠狠色狠狠色综合日日小说| 亚洲午夜久久久久久久| 国产人妖伪娘一区91| 欧美精品电影免费在线观看| 日韩有码在线电影| 国产91在线视频| 亚洲激情在线视频| 亚洲免费高清视频| 欧美亚州一区二区三区| 国产91九色视频| 国产精品三级网站| 福利二区91精品bt7086| 久久综合伊人77777尤物| 中文日韩电影网站| 97在线精品国自产拍中文| 国产精品99导航| www.日韩不卡电影av| 亚洲片在线观看| 色999日韩欧美国产| 欧美大片大片在线播放| 国产精品视频26uuu| 一本大道香蕉久在线播放29| 国产91精品在线播放| 欧美性黄网官网| 国产精品视频yy9099| 国产精品小说在线| 欧美乱人伦中文字幕在线| 一区二区三区精品99久久| 色樱桃影院亚洲精品影院| 国产欧美日韩精品丝袜高跟鞋| 精品久久中文字幕久久av| 成人午夜一级二级三级| 97视频网站入口| 亚洲人成在线一二| 精品一区二区电影| 日韩欧美在线免费| 在线中文字幕日韩| 精品国产一区二区三区久久狼黑人| 久久伊人精品视频| www欧美日韩| 中文字幕精品国产| 97超级碰碰碰| 欧美亚洲一区在线| 亚洲视频日韩精品| 国产日产欧美精品| 欧美放荡办公室videos4k| 精品久久久久久久久国产字幕| 在线观看91久久久久久| 亚洲精品视频在线播放| 91在线观看免费观看| 一区二区欧美在线| 在线国产精品视频| 国产欧美精品久久久| 精品国产91乱高清在线观看| 国产视频久久久久久久| 亚洲电影免费观看高清完整版| 中文字幕久久亚洲| 国产精品99久久久久久久久久久久| 久久中文字幕一区| 91手机视频在线观看| 狠狠久久亚洲欧美专区| 亚洲视屏在线播放| 欧美国产日韩中文字幕在线| 日韩一区二区三区在线播放| 色综合久久88色综合天天看泰| 中文字幕免费精品一区高清| 欧美日韩一区二区免费在线观看| 欧美丝袜第一区| 亚洲国产精品资源| 国产91免费观看| 日韩av在线网| 亚洲精品成人久久| 久久99国产综合精品女同| 自拍亚洲一区欧美另类| 亚洲成人精品视频| 欧美人交a欧美精品| 欧美精品videos性欧美| 91精品久久久久久久久| 国产精品啪视频| 亚洲伊人成综合成人网| 91视频免费在线| 亚洲男子天堂网| 最好看的2019的中文字幕视频| 欧美日韩激情视频8区| 精品国产31久久久久久| 欧美日韩免费在线| 国产视频久久久久久久| 欧美成年人视频网站欧美| 一区二区三区国产在线观看| 久久精品视频在线观看| 午夜免费在线观看精品视频| 日韩激情视频在线播放| www.日韩视频| 亚洲成年人在线播放| 亚洲午夜久久久影院| 日韩精品在线免费| 亚洲一区二区免费在线| 最近2019年好看中文字幕视频| 亚洲综合国产精品| 国产性色av一区二区| 国产精品入口免费视| 亚洲人在线视频| 久久精品91久久香蕉加勒比| 亚洲午夜精品久久久久久久久久久久| 97超视频免费观看| 欧美孕妇孕交黑巨大网站| 亚洲精品免费一区二区三区| 在线激情影院一区| 欧美日韩一二三四五区| 日韩av电影在线网| 亚洲日本aⅴ片在线观看香蕉| 日韩在线观看成人| 国产噜噜噜噜噜久久久久久久久| 成人免费在线视频网站| 亚洲美女激情视频| 亚洲精品成人av| 国产精品成人va在线观看| 国产一区二区三区四区福利| 欧美二区乱c黑人| 欧美激情欧美激情在线五月| 欧美在线精品免播放器视频| 亚洲xxxx在线| 欧美夜福利tv在线| 欧美精品电影免费在线观看| 国产美女精品免费电影| 国产97在线|日韩| 亚洲国产天堂久久国产91| 久久久成人精品| 欧美电影免费观看| 成人免费在线网址| 欧美一级大片在线免费观看| 欧美亚洲伦理www| 九九久久精品一区| 亚洲无av在线中文字幕| 亚洲国产精品热久久| 国产精品一区二区三区久久久| 在线播放国产一区中文字幕剧情欧美| 欧美亚洲成人xxx| 久久精品福利视频| 亚洲欧美另类自拍| 亚洲欧美在线x视频| 国产一区二区黑人欧美xxxx| 日本中文字幕久久看| 最近中文字幕日韩精品| 欧美中文字幕在线视频| 91麻豆国产精品| 日韩国产一区三区|