麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

String類的intern內部化方法釋疑

2019-11-18 13:09:07
字體:
來源:轉載
供稿:網友

  相信絕大多數的人不會去用String類的intern方法,打開String類的源碼發現這是一個本地方法,定義如下:
  public native String intern();
  
  文檔告訴我們該方法返回一個字符串對象的內部化引用:由String類維護一個初始為空的字符串的對象池,當intern方法被調用時,假如對象池中已經包含這一個相等的字符串對象則返回對象池中的實例,否則添加字符串到對象池并返回該字符串的引用。
  
  從程序的角度上怎么來看這個方法呢,我們假設有兩個字符串s1,s2,當s1.equals(s2)時,s1.intern()==s2.intern(),也就是說這兩個字符串在內存中使用的是同一個實例。
  
  java語言規范中定義了字符串文字以及更一般的常量表達式的值的字符串是被內部化的,以便它們共享同一個實例。我們試驗一下下面代碼
  
  String s1 = "你好,Java自由人";
  String s2 = "你好," + "Java自由人";
  System.out.PRintln(s1==s2);
  System.out.println(s1.intern()==s2.intern());
  
  這段代碼將打印兩個true,也就是說字符串s1和s2是共享同一個實例。不過前提是盡管使用了表達式,但是表達式中必須都是常量。
  
  當然我現在還想不出這個方法到底有什么用,不過算是對Java虛擬機內部組織結構的一些了解,同時了解這個處理機制也可以讓我們在用到字符串常量的時候了解如何節省這些字符串所占用的內存。
  
  很希奇的是intern這個方法居然在JBuilder 2005上被告知是一個未定義的方法,在Eclipse中表現很正常。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 超碰97国产在线 | 99精品在线免费 | av老司机久久 | 亚洲视屏 | 中国国语毛片免费观看视频 | 国产精品成人一区 | 亚洲国产精品久久久久久久 | 国产精品啪一品二区三区粉嫩 | 天天夜夜草 | 99成人精品视频 | 国产在线一级片 | 国产一级www | 日本高清电影在线播放 | 精品国产乱码久久久久久丨区2区 | 精品国产一区二区三区在线观看 | 欧美日本一区二区 | 色诱亚洲精品久久久久久 | 亚洲成人福利网站 | 久久综合福利 | 国产精品视频六区 | 性视频久久 | 99精品欧美一区二区 | 宅男视频在线观看免费 | 99精品无人区乱码在线观看 | 夜间福利网站 | 亚洲一区二区三区视频免费 | 有色视频在线观看 | 成人 精品 | 蜜桃一本色道久久综合亚洲精品冫 | 久久免费看毛片 | 久久色网站 | 日韩在线欧美在线 | 午夜精品区| 国产一区二区高清在线 | 黄色免费播放网站 | 极品大长腿啪啪高潮露脸 | 美女福利视频国产 | 欧美一级特黄aaaaaa在线看首页 | 欧美日韩国产中文字幕 | 国产一区二区精品免费 | 成年性羞羞视频免费观看无限 |