1、== 和 equal
基本類型比較用==,引用類型比較用equals
2、二元表達式
return (x < y) ? -1 : ((x == y) ? 0 : 1);
3、前後綴自增自減
1、將 x 加4,並將結果賦回給 x 可以這麼寫 x+=4
2、前綴自增自減法(++a,--a): 先進行自增或者自減運算,再進行表達式運算。
3、後綴自增自減法(a++,a--): 先進行表達式運算,再進行自增或者自減運算 實例:
public class selfAddMinus{
public static void main(String[] args){
int a = 5;//定義一個變量;
int b = 5;
int x = 2*++a;
int y = 2*b++;
System.out.println("前綴運算a="+a+",x="+x);
System.out.println("後綴運算b="+b+",y="+y);
}
}
前綴運算後a=6,x=12
後綴運算後b=6,y=10
4、2<<3 ?
這是位運算表達式
<<表示算術左移,用來將一個數的二進制位序列左移若干位,高位左移後溢出,捨棄不用,在右補0。
如2<<3
把十進制值2轉成二進制數補碼:00000010
把2的二進制位向左移動3位,高位左移後溢出(以左爲高),捨棄不用,在右邊補0:
把00000010向左移動三位,最左邊三個0溢出——>00010
然後再右邊補三個0——>00010000
再將這個二進制碼轉成十進制數字就是16。
4、Java中的異或運算符^
int a=2;
int b=3;
a=a^b;
b=a^b;
a=a^b;
System.out.println("a="+a+",b="+b);
^是異或運算符,異或的規則是轉換成二進制比較,相同爲0,不同爲1
一個數a與另一個數b異或的結果等於a^b,用結果( a^b)異或a,就會得到b;
上面的結果,我們用代碼來驗證。代碼( a=a^b; b=a^b; a=a^b;)可以轉換成這樣。
int c=a^b ; ------------ 01=10^11 得到結果C( a^b)
b=c^b; ------------ 10=01^11 用結果( a^b)異或a,就會得到b;
a=c^a; -------------11=01^10 用結果( a^b)異或b,就會得到a;
5、&和&&的區別
雖然二者都要求運算符左右兩端的布爾值都是true整個表達式的值纔是true。&&之所以稱爲短路運算是因爲,如果&&左邊的表達式的值是false,右邊的表達式會被直接短路掉,不會進行運算。很多時候我們可能都需要用&&而不是&,例如在驗證用戶登錄時判定用戶名不是null而且不是空字符串,應當寫爲:username != null &&!username.equals(“”),二者的順序不能交換,更不能用&運算符,因爲第一個條件如果不成立,根本不能進行字符串的equals比較,否則會產生NullPointerException異常。
注意:邏輯或運算符(|)和短路或運算符(||)的差別也是如此。
6、Math.abs() 取絕對值,可用於比較金額是否一致,如差值小於0.01認爲金額相等
7、隨機數
Math.random() 返回是 double 類型,取值範圍 0≤x<1(能夠取到零值,注意除零異常);
獲取整數類型的隨機數,使用 Random 對象的 nextInt 或者 nextLong 方法。
double value1 = Math.random(); //返回大於等於0.0 小於1.0的隨機數
Random random = new Random();
int value2 = random.nextInt(); //返回範圍爲int的取值範圍的隨機數
int value3 = random.nextInt(20); //返回大於等於0 小於20的隨機數
8、forEach+ 拉姆達表達式遍歷
@Test
public void forEachTest(){
List<String> list=new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.forEach(cc -> System.out.println("forEach輸出"+cc));
}
forEach輸出a
forEach輸出b
forEach輸出c
forEach輸出d
forEach輸出e
9、iterator可以隨之修改元素內部的元素。可以在遍歷的時刻用remove()!!!!for和foreach兩個都不可以!!!
10、spliterator
11、BeanUtils.copyProperties()與PropertyUtils.copyProperties()
12、獲取文件路徑
1、String url=System.getProperty("catalina.home");//獲取當前Tomcat路徑,catalina.home爲電腦path設置的值。
2、File directory = new File("");//設定爲當前文件夾
String url=directory.getAbsolutePath();//獲取絕對路徑 (獲取到當前項目實際路徑)
3、String url =this.getClass().getClassLoader().getResource("../../").getPath();(直接獲取當前所在位置推薦)
4、String url = ContactsController.class.getClassLoader().getResource("../../").getPath();(直接獲取當前所在位置推薦)其中ContactsController爲當前類名稱
統一加上url = URLDecoder.decode(url,"utf-8");不然當路徑中有空格時會轉義成%20導致路徑錯誤
獲取路徑方法3和4效果相同,url = URLDecoder.decode(url,"utf-8");必填
13、通過路徑獲取配置文件,並得到配置文件內容
private static Properties props = null;
static {
// 加載配置文件內容到props對象中
try {
InputStream in = DaoFactory.class
.getClassLoader().getResourceAsStream("dao.properties");
props = new Properties();
props.load(in);
} catch(Exception e) {
throw new RuntimeException(e);
}
}
14、反射來創建類對象
Class clazz = Class.forName("要加載的類名稱");
User user = (User)clazz.newInstance();