Java (操作)

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();

https://www.cnblogs.com/xingzc/p/5760166.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章