亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

android studio錯(cuò)誤: 常量字符串過(guò)長(zhǎng)的解決方式

 更新時(shí)間:2020年04月28日 09:07:05   作者:小剛學(xué)編碼  
這篇文章主要介紹了android studio錯(cuò)誤: 常量字符串過(guò)長(zhǎng)的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

android studio 錯(cuò)誤: 常量字符串過(guò)長(zhǎng)錯(cuò)誤

省市區(qū)三級(jí)聯(lián)動(dòng),位置字符串。

這樣不行

改用json方案 ,讀取array中文件

  String provsData = new GetJsonDataUtil().getJson(activity, "provsData.json");//獲取assets目錄下的json文件數(shù)據(jù)
  String distsData = new GetJsonDataUtil().getJson(activity, "distsData.json");//獲取assets目錄下的json文件數(shù)據(jù)
  String citysData = new GetJsonDataUtil().getJson(activity, "citysData.json");//獲取assets目錄下的json文件數(shù)據(jù)
public class GetJsonDataUtil {


  public String getJson(Context context, String fileName) {

    StringBuilder stringBuilder = new StringBuilder();
    try {
      AssetManager assetManager = context.getAssets();
      BufferedReader bf = new BufferedReader(new InputStreamReader(
          assetManager.open(fileName)));
      String line;
      while ((line = bf.readLine()) != null) {
        stringBuilder.append(line);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return stringBuilder.toString();
  }
}

補(bǔ)充知識(shí):關(guān)于Java的String字符串常量的長(zhǎng)度問(wèn)題

雖然這種問(wèn)題應(yīng)該很難遇到,但是遇到了也會(huì)感到莫名其妙。不知道大家有沒(méi)有遇到那種在java代碼里用字符串寫sql語(yǔ)句的情況,但是如果sql語(yǔ)句字符串的長(zhǎng)度太長(zhǎng)的話就會(huì)報(bào)錯(cuò)。

代碼如下:

代碼A

String str = "567890123456789...0123456789";//由于字符串長(zhǎng)度太長(zhǎng),所以省略一部分,長(zhǎng)度是65535
System.out.println(str.length()); //編譯報(bào)錯(cuò):Error:(14, 22) java: 常量字符串過(guò)長(zhǎng)

代碼B

String str = "67890123456789...0123456789";//由于字符串長(zhǎng)度太長(zhǎng),所以省略一部分,長(zhǎng)度是65534
System.out.println(str.length()); //編譯通過(guò),運(yùn)行結(jié)果為:65534

代碼C

String str = "67890123456789...0123456789";//由于字符串長(zhǎng)度太長(zhǎng),所以省略一部分,長(zhǎng)度是65534
str = "5" + str;
System.out.println(str.length());  //編譯通過(guò),運(yùn)行結(jié)果為:65535

String內(nèi)部是以char數(shù)組的形式存儲(chǔ),數(shù)組的長(zhǎng)度是int類型,那么String允許的最大長(zhǎng)度就是Integer.MAX_VALUE = 2^31 - 1 = 2147483647。又由于java中的字符是以16位存儲(chǔ)的,因此大概需要4GB的內(nèi)存才能存儲(chǔ)最大長(zhǎng)度的字符串。

不過(guò)這僅僅是對(duì)字符串變量而言,如果是字符串常量,如“abc”、”1234”之類寫在代碼中的字符串str,那么允許的最大長(zhǎng)度取決于字符串在常量池中的存儲(chǔ)大小,也就是字符串在class格式文件中的存儲(chǔ)格式:

CONSTANT_Utf8_info {
  u1 tag;
  u2 length;
  u1 bytes[length];
}

u2是無(wú)符號(hào)的16位整數(shù),因此理論上允許的string str的最大長(zhǎng)度是2^16-1=65535。然而實(shí)際測(cè)試表明,允許的最大長(zhǎng)度僅為65534,超過(guò)就編譯錯(cuò)誤。

以上這篇android studio錯(cuò)誤: 常量字符串過(guò)長(zhǎng)的解決方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論