(1)你的判斷兩個數的奇偶性你用的方法合適嗎
if(num%2!=0) 奇數 else 偶數
大家都知道這個方法,其實還有更快的小方法,可能有些人就不知道了
if(num & 1 ==1) 奇數else 偶數,用的屎位運算,肯定要快些啦。
(2)兩個數的互換,大家都可能會用
type temp;
temp = x;
x = y;
y = temp;
也有不用臨時變量的方法
x = x+y;
y = x-y;
x = x-y;
或
x = x^y;
y = y^x;
x = x^y;同樣可以實現兩個兩個數交換,說有什麼技術含量還真沒什麼,就是面試可能會考到。
(3)LINUX裡面的權限判斷,也可以借鑒,這裡也是用位運算
int read = 1<<0;
int write = 1<<1;
int execute = 1<<2;
定義用戶操作一個文件的權限為read | execute(權限值為5);linux裡面文件的權限是三位數如777(系統任何人都有可讀,可寫,可執行的權限),可以用ls -l命名查看,因為linux裡面的權限有組的概念,和windows的組策略差不多。
那麼用戶操作該文件的權限就可以算出來了 (read | execute) & read>=1?可讀:不可讀; 以此類推…
(4)字符串處理最好用正則表達式,和編譯原理的神馬自動機理論有關,處理速度也是非常快,在linux下大量使用如Grep命令,例子查找文件Hello.java文件裡面是否有main關鍵字,
就可以用 find -name home\Hello.java | grep *\s+main\s+* |more
我們要處理根據xml旳節點的命名標准來判斷字符串,XML節點命名標准如下:
1.第一個字符必須位字符
2.中間必須位數字和字符或.-_
3.最後必須位數字或字符或空格或.-_
我們就用JAVA的regex來處理,非常方便,正則表達是為:
String regex = “^[[a-zA-Z]|[\u2E80-\u9FFF]]+[[a-zA-Z]|[0-9]|[\u2E80-\u9FFF]|[.|\\-|_]]+\\s*”; (不要看這麼長,實際上是非常簡單的,看看Java API就知道怎麼寫了)
public class RegexTest{
@org.junit.Test
public void regexTest(){
String regex = “^[[a-zA-Z]|[\u2E80-\u9FFF]]+[[a-zA-Z]|[0-9]|[\u2E80-\u9FFF]|[.|\\-|_]]+\\s*”;
String input = “w你w好.-.553.你-.__.-. “;
java.util.regex.Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while(!matcher.matches()){
System.out.println(“匹配失敗”);
break;
}
System.out.println(“匹配成功”);
//也可以用這種方式判斷
/*
boolean isMacher = Pattern.matches(regex,input );
System.out.println(isMacher?”匹配”:”不匹配”);
*/
}
}
xml文件節點<w你w好.-.553.你-.__.-. />用上面的正則表達式來判斷是沒有問題的。
小技巧也就是平時編程的經驗積累吧,所以呢我還是提倡多寫代碼,多思考。