1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      如何在Java項目中運行字符串表達式

      本文章向大家介紹如何在Java項目中運行字符串表達式的基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。

      成都一家集口碑和實力的網(wǎng)站建設服務商,擁有專業(yè)的企業(yè)建站團隊和靠譜的建站技術,十載企業(yè)及個人網(wǎng)站建設經(jīng)驗 ,為成都上1000+客戶提供網(wǎng)頁設計制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設等服務,包括成都營銷型網(wǎng)站建設,品牌網(wǎng)站設計,同時也為不同行業(yè)的客戶提供成都網(wǎng)站設計、成都網(wǎng)站制作的服務,包括成都電商型網(wǎng)站制作建設,裝修行業(yè)網(wǎng)站制作建設,傳統(tǒng)機械行業(yè)網(wǎng)站建設,傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設。在成都做網(wǎng)站,選網(wǎng)站制作建設服務商就選成都創(chuàng)新互聯(lián)公司

      Java的特點有哪些

      Java的特點有哪些 1.Java語言作為靜態(tài)面向對象編程語言的代表,實現(xiàn)了面向對象理論,允許程序員以優(yōu)雅的思維方式進行復雜的編程。 2.Java具有簡單性、面向對象、分布式、安全性、平臺獨立與可移植性、動態(tài)性等特點。 3.使用Java可以編寫桌面應用程序、Web應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序等。

      基本用法介紹

      字符串表達式通過一個叫 RunnerUtil 的靜態(tài)類運行,可以直接運行得到表達式結果,也可以解析一個表達式后在需要的時候運行,RunnerUtil 主要有以下幾個方法:

      RunnerUtil.run(/* expression */); 直接運行表達式并得到結果;
      RunnerUtil.run("1 + 1"); // 2
      RunnerUtil.run(" 'Hello' + ' ' + 'World!' "); // "Hello World!"
      RunnerUtil.run(/* expression */, / * data */); 運行含有變量的表達式,后面的 data 是變量將要指向的“值”;
      RunnerUtil.parseRun(/* expression */); 直接運行“另一種”表達式,并得到結果,如:
      RunnerUtil.parseRun("Hello {{  'World!'  }}"); // "Hello World!"

      可見 #parseRun 是運行包含“插值語法”的表達式,被包裹的內(nèi)容被作為一個表達式單獨運行;

      字符串中可以包含多個插值語法表達式,但不能嵌套和交叉,也可以運行含有變量的表達式。

      Runner runner = RunnerUtil.parse(/* expression */);

      解析一個字符串表達式,得到一個“字符串表達式運行器” —— Runner,然后調(diào)用其 run(/ * data */) 方法運行并得到結果。

      語法及運算詳細介紹

      作為一個具有一定“語言特點”的東西,它定義了一些自己的語法、數(shù)據(jù)類型、運算類型等,但大部分都與 Java 和 JavaScript 兼容,相同符號具有相同或相似的語言意義。

      數(shù)據(jù)類型:

      1、null:這是一個關鍵字,但因為它符合和變量的定義規(guī)則,所以需要注意一下,同樣被定義為關鍵字的還有 true 和 false。

      2、boolean:true 和 false

      RunnerUtil.run(" null  "); // null
      RunnerUtil.run("  true "); // true
      RunnerUtil.run("false"); // false
      // 表達式中多余的空格自動忽略

      數(shù)字:這里面的數(shù)字統(tǒng)一采用 Java 里的 int 和 double 型數(shù)據(jù),直接參與運算的也只有是這兩種類型,區(qū)別就是有沒有小數(shù)點。

      RunnerUtil.run(" 12 "); // 12
      RunnerUtil.run(" 12.5 "); // 12.5
      // 表示數(shù)字必須是連續(xù),中間不能有空格的
      // 否則將拋出異常,如
      RunnerUtil.run(" 12. 5"); // 異常
      RunnerUtil.run(" 1 2 "); // 異常

      表示數(shù)字的字符之間應該是連續(xù)的,如:25、36.9 等;如果是不連續(xù)的會拋出異常,如:2 5、36 .9 等;

      字符串:Java 里的字符串用雙引號包裹,在這里還將表示字符的單引號“征用”,雙引號單引號包裹的都表示普通字符串的直接值,這樣做也是為了書寫方便(與 JavaScript 相似),同時也就沒有了 char 類型數(shù)據(jù)啦啦啦……

      RunnerUtil.run(" 'abcdef' "); // "abcdef"
      RunnerUtil.run(" \"abcdef\" "); // "abcdef"
      RunnerUtil.run(" 'abc  def' "); // "abc  def"

      List:實際上是 ArrayList,對應 JavaScript 里面的數(shù)組。Java 的數(shù)組也對應 JavaScript 數(shù)組。

      RunnerUtil.run(" { } "); 
      // 總是返回一個空ArrayList
      RunnerUtil.run(" {1,2,,4, } "); 
      // 總是返回一個包含:1、2、null、4 這幾項的 ArrayList
      // 可以看出最后一個逗號之后如果是結束符號會自動忽略
      // 中間的逗號與逗號之間若沒有其他非空白符號會插入一個 null 值

      Map:實際上是 HashMap,對應 JavaScript 里的對象。同樣對應 JavaScript 對象的還有普通 POJO。
      Map 對應的是 JavaScript 里的對象,但是在這里 Map 的鍵可以是這些數(shù)據(jù)類型:

      null、true / false、數(shù)字(int / double)、字符串,不能再是其他 Java 對象了

      RunnerUtil.run(" {:} "); // 總是返回一個空 HashMap,
      // 注意與空 List 的異同,都是用花括號表示
      // 但空 Map 里面需要有一個冒號,否則就是 List
      
      RunnerUtil.run(" {key: 'value'}");
      // 總是返回包含一個鍵值對的 HashMap
      // 可以看出,對象的鍵名是字符串的話可以不用引號包裹
      // 但是值必須被包裹
      RunnerUtil.run(" {true: 'value'}"); // 鍵是 true
      /*
       * 這里的 true 不是字符串,而是 boolean。
       * 同樣,未被引號包裹的 null、false、數(shù)字都是對應類型的數(shù)據(jù),而不是字符串
       * 其他符合變量命名規(guī)則的鍵都是普通字符串,被單引號或雙引號包裹的也是
       */
      RunnerUtil.run(" {'true': 'value', 25: false, 'name': \"張三\"}");

      運算支持的類型:

      普通四則混合運算:+、-、*、/、%、()
      RunnerUtil.run(" 1 + 1 "); // 2
      RunnerUtil.run(" 1 + (3 * 4)) "); // 13
      RunnerUtil.run(" 'Hello ' + \"World!\" "); // "Hello World!"
      RunnerUtil.run(" true + false "); // "truefalse"
      /*
       * true+false 在 Java 中是不允許的
       * 但如果是“+”運算的話,這里均作為普通字符串;
       * 相當于調(diào)用了 toString 方法
       */
      
      位運算:&、|、^、<<、>>
      RunnerUtil.run(" 1 ^ 1 "); 
      RunnerUtil.run(" 1 & 1 "); 
      RunnerUtil.run(" 1 | 1 "); 
      RunnerUtil.run(" 1 << 1 "); 
      RunnerUtil.run(" 1 >> 1 ");
      
      比較運算:>、>=、==、<=、<
      RunnerUtil.run(" 1 + 1 == 2 "); // true
      RunnerUtil.run(" 1 + 1 < 2 "); // false
      
      邏輯運算:&&、||、!
      RunnerUtil.run("1+1==2 && 5 > 4"); // true
      
      變量:命名規(guī)則與 Java 變量命名規(guī)則相同,同時 null、true、false 不能作為變量
      表達式中包含變量就代表這個表達式在運行得到結果時需要從外部獲取數(shù)據(jù),如果不能正確的從數(shù)據(jù)源讀取到數(shù)據(jù),運行就會拋出異常;
      
      RunnerUtil.run(" 'Hello, ' + name "); // 拋出異常
      
      Map data = new HashMap();
      data.put("name", "Li Lei!");
      
      RunnerUtil.run(" 'Hello, ' + name ", data); // "Hello, Li Lei!"

      鏈式取值:鏈式語法與 JavaScript 很相似

      HashMap data = new HashMap(); 
      
      ArrayList list = new ArrayList(); 
      list.add(true); 
      list.add(false); 
      list.add(25); 
      list.add('隔壁老王'); 
      
      HashMap map = new HashMap(); 
      map.put("name", "小四"); 
      map.put("index", 2); 
      map.put(true, "true 是 Boolean 類型作為鍵"); 
      
      data.put("list", list); 
      data.put("map", map); 
      
      RunnerUtil.run("map.name", data); // "小四"
      
      RunnerUtil.run("map['name']", data); 
      // "小四" (也可以這樣取值)
      
      RunnerUtil.run("list[ 2 ]", data);
      // 25 (索引取值需要用方括號包裹) 
      
      RunnerUtil.run("list[3]", data);
      // "隔壁老王" (索引取值需要用方括號包裹) 
      
      RunnerUtil.run("list[map.index]", data); // 25
      // (這是高級點的用法,方括號包含另一個表達式
      // 返回值是一個索引,然后返回索引指向的值)
      
      RunnerUtil.run("[true]", data); // "true 是 Boolean 類型作為鍵"
      // 如果不用方括號包括,true 就是一個直接值,返回 true
      // 那么問題來了:
      // 如果傳入的數(shù)據(jù)不是 Map 或 POJO,而是 List 或數(shù)組怎么辦呢?
      RunnerUtil.run(" [1] ", list); // false
      // 啊……唐宗宋祖,略顯風騷!
      
      // 這種鏈式語法與 JavaScript 很相似

      運行方法:目前只能運行無參和一個參數(shù)的方法,變長參數(shù)的方法支持不完善,慎用。
      這里的數(shù)據(jù) data 繼續(xù)用上一條的 data,具體數(shù)據(jù)不寫了

      RunnerUtil.run("map.size()", data); // 3
      RunnerUtil.run("map.get('name')", data); // "小四" 
      RunnerUtil.run("map.get('name').length()", data); // 2
      RunnerUtil.run("map.name.length()", data); // 2
      RunnerUtil.run(" [3].length() ", list); // 4
      // 唐宗宋祖,又顯風騷!

      運行靜態(tài)方法: @ ;運行靜態(tài)方法需要用到“@”符號作為標記。目前也不支持多參數(shù)方法調(diào)用。
      當你打開源碼會發(fā)現(xiàn)這是一整個獨立的工具庫,很多方法和 commons-lang 包內(nèi)容相似(個人認為不是重復造輪子,也有很多不同的和不如的)...,運行靜態(tài)方法也可以運行這個工具庫內(nèi)的所有工具方法,暫時未將 RunnerUtil 剝離出來,也還不支持自定義的靜態(tài)方法調(diào)用,不過這個工具庫所提供的功能

      RunnerUtil.run("@System.currentTimeMillis() ");
      // 15.....(一個毫秒數(shù))
      RunnerUtil.run("@Objects.toString(25) "); // "25"

      以上就是小編為大家?guī)淼娜绾卧贘ava項目中運行字符串表達式的全部內(nèi)容了,希望大家多多支持創(chuàng)新互聯(lián)!


      網(wǎng)頁名稱:如何在Java項目中運行字符串表達式
      分享鏈接:http://ef60e0e.cn/article/jehpec.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        济南市| 滨海县| 五寨县| 文安县| 绥江县| 酉阳| 饶河县| 乡宁县| 闸北区| 进贤县| 那曲县| 万宁市| 禹城市| 白河县| 海伦市| 静宁县| 子长县| 禄丰县| 南漳县| 通辽市| 团风县| 建水县| 丹阳市| 四子王旗| 禹州市| 平定县| 萍乡市| 舟山市| 汤原县| 襄垣县| 乐陵市| 青海省| 通化县| 阳江市| 察哈| 游戏| 诏安县| 五河县| 万盛区| 贡山| 海口市|