- 三元運算符:用來完成簡單的選擇邏輯,使用格式:
(條件表達(dá)式)?表達(dá)式1:表達(dá)式2;
public static void ternary() {
boolean boo = false;
int c = boo ? test1(1) : test2(2); //返回數(shù)據(jù)
}
- 遍歷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)雅的寫法再芋!
- 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支持批處理
- 判斷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)換為其哈希值的比較倾鲫。
- 遍歷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);
}
}
- 將Array轉(zhuǎn)換成List
String[] userid = {"aa","bb","cc"};
List<String> userList = new ArrayList<String>();
Collections.addAll(userList, userid);
- 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下是這個樣子的:
- 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();
}
}