天天看點

java基礎常見問題和eclipse常用快捷鍵

java基礎常見問題,eclipse常用快捷鍵,java中正規表達式捕獲組的引用,lambda表達式

一、java常用庫

java.lang中

  StringBuffer,StringBuilder,System,Runtime,Math

java.util

  Date,Calendar,Random

java.text

  日起格式化類SimpleDateFormat中有format,parse

二、線程安全問題的解決

  方法一:使用同步代碼塊

    synchronized(唯一共享對象){}

  方法二:使用同步函數

    使用synchronized修飾一個函數即可。

三、建立線程方法

  方法一、将類聲明為

Thread

的子類。該子類應重寫

Thread

類的

run

方法。啟動線程的方法是該類執行個體對象調用start()方法。

  方法二、聲明實作

Runnable

接口的類。該類然後實作

run

方法。要想啟動啟動線程還需要建立一個Thread類的執行個體對象,在構造方法中傳遞一個實作了

Runnable接口的的類執行個體,然後調用start()方法開啟線程。

四、疊代器使用的注意事項

  在使用疊代器的過程中隻能使用疊代器進行添加或者删除元素,而不能使用集合類。

五、eclipse中常用的快捷鍵

  1 代碼提示Alt+/

  2 快速修複Ctrl+1

  3 代碼塊上下移動Alt+方向鍵

  4 代碼塊注釋Ctrl+Shift+/,取消代碼塊注釋Ctrl+Shift+\

  5 删除目前行Ctrl+d

  6 代碼格式化Ctrl+Shift+f

  7 導入目前所有沒有導入的包Ctrl+Shift+o

六、導入子產品的靜态方法

  例如:導入Arrays子產品的sort方法,import static java.util.Arrays.sort;

  如果想要将靜态方法全部導入,就是import static java.util.Arrays.*;

  

七、foreacch語句的使用,使用在數組或實作Iterable接口的對象上。

  比如ArrayList對象

ArrayList<String> al = new ArrayList<String>();
        al.add("nice");
        al.add("good");
        al.add("well");
        al.add("night");
        for(String item:al){
            System.out.println(item);
        }      

注意:在疊代過程中,不能使用集合對象增删資料,不然會抛出異常。

八、可變參數,必須是最後一個參數

九、集合類型的對象隻能添加對象,自動裝箱:将基本類型轉換成對應的引用類型。自動拆箱:将引用類型轉換成基本資料類型。

 十、枚舉類,通常用于隻有有限個數值的集合

  1) 枚舉類是一個特殊的類,枚舉類的預設構造方法的修飾符是private。

  2) 枚舉類可定義自己的成員變量和成員函數

  3) 可以定義抽象方法,但是在定義枚舉值時必須實作抽象方法

  4) 枚舉值必須位于枚舉類的第一條語句

十一、正規表達式中捕獲組的重用,在同一個正規表達式中,如果用到捕獲組,想再次引用之前的捕獲組,使用方法是\num,意思是引用第num個捕獲組,注意num是從1開始的,在java字元串中\要轉義,是以是\\num。

比"([ab])\\1"會比對,aa、bb。如果模式是"([ab])(\\1){2,}"表示将第一捕獲組的引用作為一組,出現大于2次。

例子:将字元串中英文字母連續出現三次以上的字母去掉,如果去掉後重新組合的字元串中還有連續出現三次以上的字元,進行相同的處理。直到沒有三個以上連續的字元。

比如:ACDDDCCA處理後的結果是AA,代碼如下:

public static void main(String[] args) {
        String instr = "ABCCDDDDCCB";
        System.out.println(prostr(instr));

    }
    public static String prostr(String instr){
        Pattern pattern = Pattern.compile("([a-zA-Z])(\\1){2,}");
        Matcher matcher = pattern.matcher(instr);
        if (matcher.find()) {
            instr = matcher.replaceAll("");
            instr = prostr(instr);
            return instr;
        }else {
            return instr;
        }
    }          

十二、java8中新增特性lambda表達式,對于隻有一個方法的接口,在Java 8中,現在可以把它視為一個函數

  Lambda表達式的文法

基本文法:

(parameters) -> expression

(parameters) ->{ statements; }

  比如:(int x, int y) -> x + y  //接收2個int型整數,傳回他們的和  

那麼現在可以使用匿名内部類和lambda來實作一個排序方法

1 匿名内部類實作

public static void sortString1(){
        String[] names = {"Rafael Nadal", "Novak Djokovic",   
                "Stanislas Wawrinka", "David Ferrer",  
                "Roger Federer", "Andy Murray",  
                "Tomas Berdych", "Juan Martin Del Potro",  
                "Richard Gasquet", "John Isner"};
        
        System.out.println("before compare:");
        for (String string : names) {
            System.out.println(string);
        }
        System.out.println();
        
        Arrays.sort(names, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
            
        });
        
        System.out.println("after compare:");
        for (String string : names) {
            System.out.println(string);
        }
        
        
    }      

2) lambda表達式實作

public static void sortString2(){
        String[] names = {"Rafael Nadal", "Novak Djokovic",   
                "Stanislas Wawrinka", "David Ferrer",  
                "Roger Federer", "Andy Murray",  
                "Tomas Berdych", "Juan Martin Del Potro",  
                "Richard Gasquet", "John Isner"};
        
        System.out.println("before compare:");
        for (String string : names) {
            System.out.println(string);
        }
        System.out.println();
        
        Arrays.sort(names,(String s1,String s2)->(s1.compareTo(s2)));
        
        
        System.out.println("after compare:");
        for (String string : names) {
            System.out.println(string);
        }
        
        
    }      
java基礎常見問題和eclipse常用快捷鍵