Java填坑筆記:OGG-PRM項目知識點

  1. 三元運算符:用來完成簡單的選擇邏輯,使用格式:
    (條件表達(dá)式)?表達(dá)式1:表達(dá)式2;
public static void ternary() {
  boolean boo = false;
  int c = boo ? test1(1) : test2(2);  //返回數(shù)據(jù)
}
  1. 遍歷List集合隆檀,對集合中最后一個元素進行判斷:
    foreach語句是for語句在特殊情況下的增強版本,簡化編程北滥,提高了代碼的可讀性和安全性(不用擔(dān)心數(shù)組越界)刚操,相對于for語句是一個很好的補充,但foreach并不能替代for語句:
int lastIndex = colList.size()-1;
        for (int index = 0;index<=lastIndex;index++){
            String colName = colList.get(index);
            s.append(colName+" = "+colName);
            if(lastIndex == index){
                s.append("\n--插入標(biāo)記\n),\n");
            }else {
                s.append(",\n");
            }
        }

還不能確定這樣是最優(yōu)雅的寫法再芋!

  1. PrepareStatement的用法及解釋

1.PreparedStatement是預(yù)編譯的,對于批量處理可以大大提高效率. 也叫JDBC存儲過程
2.使用 Statement 對象菊霜。在對數(shù)據(jù)庫只執(zhí)行一次性存取的時侯,用 Statement 對象進行處理济赎。PreparedStatement 對象的開銷比Statement大鉴逞,對于一次性操作并不會帶來額外的好處。
3.statement每次執(zhí)行sql語句司训,相關(guān)數(shù)據(jù)庫都要執(zhí)行sql語句的編譯构捡,preparedstatement是預(yù)編譯得, preparedstatement支持批處理

  1. 判斷String中是否包含指定字符(判斷前三個字符):
String c = s.substring(0,3);
String schema = "";
  switch (c){
    case "ins":
    case "INS":
    schema = "ZOEINSUR";
    break;
  }

在java1.7之前大家都清楚switch的比較范圍只能局限于(int 、short 壳猜、byte 勾徽、char)之間,Java 虛擬機和字節(jié)代碼這個層次上统扳,只支持在 switch 語句中使用與整數(shù)類型兼容的類型喘帚。在1.7后switch實現(xiàn)字符串比較的功能。具體是如何做到的咒钟?實際上吹由,Java虛擬機和字節(jié)碼層次上只支持switch語句中使用與整數(shù)類型兼容的類型沒有變,只是這個實現(xiàn)字符串比較的新特性是在編譯器這個層次上實現(xiàn)的朱嘴。實現(xiàn)的機制是:將字符串之間的比較轉(zhuǎn)換為其哈希值的比較倾鲫。

  1. 遍歷Map
public static void main(String[] args) {


 Map<String, String> map = new HashMap<String, String>();
 map.put("1", "value1");
 map.put("2", "value2");
 map.put("3", "value3");
 
 //第一種:普遍使用,二次取值
 System.out.println("通過Map.keySet遍歷key和value:");
 for (String key : map.keySet()) {
  System.out.println("key= "+ key + " and value= " + map.get(key));
 }
 
 //第二種
 System.out.println("通過Map.entrySet使用iterator遍歷key和value:");
 Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
 while (it.hasNext()) {
  Map.Entry<String, String> entry = it.next();
  System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
 }
 
 //第三種:推薦萍嬉,尤其是容量大時
 System.out.println("通過Map.entrySet遍歷key和value");
 for (Map.Entry<String, String> entry : map.entrySet()) {
  System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
 }

 //第四種
 System.out.println("通過Map.values()遍歷所有的value乌昔,但不能遍歷key");
 for (String v : map.values()) {
  System.out.println("value= " + v);
 }
}
  1. 將Array轉(zhuǎn)換成List
String[] userid = {"aa","bb","cc"};
List<String> userList = new ArrayList<String>();
Collections.addAll(userList, userid);
  1. String分割字符串,通過判斷"\n"換行符進行字符串切割帚湘,
String[] res = str.split("\n");  

需要注意的是:

1玫荣、如果這個文件是在Linux或者mac下建立編寫的,那么用str.split("\n")會出現(xiàn)正確的結(jié)果大诸,如下圖:


2捅厂、如果這個文件是在window下編寫的,那么就該注意了资柔,如果你還是用str.split("\n")就會出現(xiàn)錯誤的結(jié)果焙贷,如下圖:

有人可能說沒什么區(qū)別啊,仔細(xì)看好了贿堰,第2個的結(jié)果辙芍,this和is testing中間有個空行,而第一個沒有羹与。為什么會出現(xiàn)這個結(jié)果故硅。
這還要從回車符來講,簡單來說纵搁,window下回車是由\r\n(即0x0D和0x0A)組成的吃衅,注意不是\n\r,而linux下回車是由\n(即0x0A)小伙伴們別搞錯了腾誉,這個我自己證實過徘层,

這個window下編輯的文件,我用16進制打開的利职,大家看到第3趣效,4列中的是0D、0A猪贪,也就是回車跷敬。
而在Linux下是這個樣子的:

  1. Java IO流寫入文件
public class WriteFileExample {
    public static void main(String[] args) {
 
        File file = new File("c:/newfile.txt");
        String content = "This is the text content";
 
        try (FileOutputStream fop = new FileOutputStream(file)) {
 
            // if file doesn't exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }
 
            // get the content in bytes
            byte[] contentInBytes = content.getBytes();
 
            fop.write(contentInBytes);
            fop.flush();
            fop.close();
 
            System.out.println("Done");
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

但這里的字符串如果包含中文,就會出現(xiàn)亂碼热押,這是因為FileOutputStream是字節(jié)流西傀,將文本按字節(jié)寫入文件,而一個漢字是兩個字節(jié)楞黄,無法一次寫入池凄,就會出現(xiàn)亂碼,解決方法是使用OutputStreamWriter將字節(jié)流轉(zhuǎn)換為字符流寫入鬼廓,同時指定utf-8編碼肿仑,修改后代碼如下:

public static void write2PRMFILE(String string){
        File file = new File("d:/test.prm");
        String content = "";
        content = string;

        try (OutputStreamWriter oStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "utf-8");) {

            // if file doesn't exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }

            // get the content in bytes
            byte[] contentInBytes = content.getBytes();

            oStreamWriter.write(content);
            oStreamWriter.flush();
            oStreamWriter.close();

            System.out.println("Done");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市碎税,隨后出現(xiàn)的幾起案子尤慰,更是在濱河造成了極大的恐慌,老刑警劉巖雷蹂,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伟端,死亡現(xiàn)場離奇詭異,居然都是意外死亡匪煌,警方通過查閱死者的電腦和手機责蝠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門党巾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人霜医,你說我怎么就攤上這事齿拂。” “怎么了肴敛?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵署海,是天一觀的道長。 經(jīng)常有香客問我医男,道長砸狞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任镀梭,我火速辦了婚禮刀森,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丰辣。我一直安慰自己撒强,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布笙什。 她就那樣靜靜地躺著飘哨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪琐凭。 梳的紋絲不亂的頭發(fā)上芽隆,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音统屈,去河邊找鬼胚吁。 笑死,一個胖子當(dāng)著我的面吹牛愁憔,可吹牛的內(nèi)容都是我干的腕扶。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼吨掌,長吁一口氣:“原來是場噩夢啊……” “哼半抱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起膜宋,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤窿侈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后秋茫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體史简,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年肛著,在試婚紗的時候發(fā)現(xiàn)自己被綠了圆兵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跺讯。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖衙傀,靈堂內(nèi)的尸體忽然破棺而出抬吟,到底是詐尸還是另有隱情萨咕,我是刑警寧澤统抬,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站危队,受9級特大地震影響聪建,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茫陆,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一金麸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧簿盅,春花似錦挥下、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喜最,卻和暖如春偎蘸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瞬内。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工迷雪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人虫蝶。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓章咧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親能真。 傳聞我的和親對象是個殘疾皇子赁严,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法舟陆,內(nèi)部類的語法误澳,繼承相關(guān)的語法,異常的語法秦躯,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,806評論 0 11
  • 01 昨天見到同學(xué)老多踱承,他情緒低落的說了一句倡缠,“國慶假期咱同學(xué)老張回來了哨免,去棺木店看...
    花似錦年閱讀 459評論 0 0
  • 北書房閱讀 470評論 2 13
  • 《夏目友人帳 第五季》已經(jīng)更新到第6集 又有不少人被暖暖的夏目和萌萌的豬貓老師圈粉 當(dāng)然在我心中暖心動畫的第一也非...
    阿雅喵閱讀 277評論 0 1