day9

學習內容:

  1. eclipse快捷鍵整理


    編輯

    Ctrl+1 快速修復(最經典的快捷鍵,就不用多說了,可以解決很多問題,比如import類、try catch包圍等)
    Ctrl+Shift+F 格式化當前代碼
    Ctrl+Shift+M 添加類的import導入
    Ctrl+Shift+O 組織類的import導入(既有Ctrl+Shift+M的作用,又可以幫你去除沒用的導入,很有用)
    Ctrl+Y 重做(與撤銷Ctrl+Z相反)
    Alt+/ 內容輔助(幫你省了多少次鍵盤敲打,太常用了)
    Ctrl+D 刪除當前行或者多行
    Alt+↓ 當前行和下面一行交互位置(特別實用,可以省去先剪切,再粘貼了)
    Alt+↑ 當前行和上面一行交互位置(同上)
    Ctrl+Alt+↓ 複製當前行到下一行(複製增加)
    Ctrl+Alt+↑ 複製當前行到上一行(複製增加)
    Shift+Enter 在當前行的下一行插入空行(這時鼠標可以在當前行的任一位置,不一定是最後)
    Ctrl+/ 註釋當前行,再按則取消註釋

    選擇

    Alt+Shift+↑ 選擇封裝元素
    Alt+Shift+← 選擇上一個元素
    Alt+Shift+→ 選擇下一個元素
    Shift+← 從光標處開始往左選擇字符
    Shift+→ 從光標處開始往右選擇字符
    Ctrl+Shift+← 選中光標左邊的單詞
    Ctrl+Shift+→ 選中光標又邊的單詞

    移動

    Ctrl+← 光標移到左邊單詞的開頭,相當於vim的b
    Ctrl+→ 光標移到右邊單詞的末尾,相當於vim的e

    搜索

    Ctrl+K 參照選中的Word快速定位到下一個(如果沒有選中word,則搜索上一次使用搜索的word)
    Ctrl+Shift+K 參照選中的Word快速定位到上一個
    Ctrl+J 正向增量查找(按下Ctrl+J後,你所輸入的每個字母編輯器都提供快速匹配定位到某個單詞,如果沒有,則在狀態欄中顯示沒有找到了,查一個單詞時,特別實用,要退出這個模式,按escape建)
    Ctrl+Shift+J 反向增量查找(和上條相同,只不過是從後往前查)
    Ctrl+Shift+U 列出所有包含字符串的行
    Ctrl+H 打開搜索對話框
    Ctrl+G 工作區中的聲明
    Ctrl+Shift+G 工作區中的引用

    導航

    Ctrl+Shift+T 搜索類(包括工程和關聯的第三jar包)
    Ctrl+Shift+R 搜索工程中的文件
    Ctrl+E 快速顯示當前Editer的下拉列表(如果當前頁面沒有顯示的用黑體表示)
    F4 打開類型層次結構
    F3 跳轉到聲明處
    Alt+← 前一個編輯的頁面
    Alt+→ 下一個編輯的頁面(當然是針對上面那條來說了)
    Ctrl+PageUp/PageDown 在編輯器中,切換已經打開的文件

    調試

    F5 單步跳入
    F6 單步跳過
    F7 單步返回
    F8 繼續
    Ctrl+Shift+D 顯示變量的值
    Ctrl+Shift+B 在當前行設置或者去掉斷點
    Ctrl+R 運行至行(超好用,可以節省好多的斷點)

    重構

    (一般重構的快捷鍵都是Alt+Shift開頭的了)
    Alt+Shift+R 重命名方法名、屬性或者變量名 (是我自己最愛用的一個了,尤其是變量和類的Rename,比手工方法能節省很多勞動力)
    Alt+Shift+M 把一段函數內的代碼抽取成方法 (這是重構裏面最常用的方法之一了,尤其是對一大堆泥團代碼有用)
    Alt+Shift+C 修改函數結構(比較實用,有N個函數調用了這個方法,修改一次搞定)
    Alt+Shift+L 抽取本地變量( 可以直接把一些魔法數字和字符串抽取成一個變量,尤其是多處調用的時候)
    Alt+Shift+F 把Class中的local變量變爲field變量 (比較實用的功能)
    Alt+Shift+I 合併變量(可能這樣說有點不妥Inline)
    Alt+Shift+V 移動函數和變量(不怎麼常用)
    Alt+Shift+Z 重構的後悔藥(Undo)

    其他

    Alt+Enter 顯示當前選擇資源的屬性,windows下的查看文件的屬性就是這個快捷鍵,通常用來查看文件在windows中的實際路徑
    Ctrl+↑ 文本編輯器 上滾行
    Ctrl+↓ 文本編輯器 下滾行
    Ctrl+M 最大化當前的Edit或View (再按則反之)
    Ctrl+O 快速顯示 OutLine(不開Outline窗口的同學,這個快捷鍵是必不可少的)
    Ctrl+T 快速顯示當前類的繼承結構
    Ctrl+W 關閉當前Editer(windows下關閉打開的對話框也是這個,還有qq、旺旺、瀏覽器等都是)
    Ctrl+L 文本編輯器 轉至行
    F2 顯示工具提示描述

  2. 基本類型及其包裝類可以相互自動裝箱拆箱

    ---------------------------------------------------------------

    作業1:生產者與消費者


  3. import java.util.List;
    
    public class Bee extends Thread {
    	private String name;
    	private List<Integer> list;
    	private final int MAX_SIZE = 30;
    
    	public Bee(String name, List<Integer> list) {
    		super();
    		this.name = name;
    		this.list = list;
    	}
    
    	@Override
    	public void run() {
    		while (true) {
    			synchronized (list) {
    				try {
    					if (list.size() > MAX_SIZE) {
    						list.wait();
    					}
    					if (list.size() <= 10) {
    						list.add(1);
    						Thread.sleep(1000);
    						System.out.println(name+"生產了1斤蜂蜜,共"+list.size()+"斤");
    						list.notify();
    					}
    				} catch (InterruptedException e) {
    					e.printStackTrace();
    				}
    			}
    			yield();
    		}
    	}
    }
  4. import java.util.List;
    
    public class Bear extends Thread {
    	private String name;
    	private List<Integer> list;
    
    	public Bear(String name, List<Integer> list) {
    		super();
    		this.name = name;
    		this.list = list;
    	}
    
    	@Override
    	public void run() {
    		while (true) {
    			synchronized (list) {
    				try {
    					if (list.size() < 10) {
    						list.wait();
    					} else {
    						Thread.sleep(10000);
    						for (int i = 0; i < 10; i++) {
    							list.remove(0);
    						}
    						System.out.println(name + "消費了10斤,剩餘" + list.size() + "斤");
    						list.notify();
    					}
    				} catch (Exception e) {
    				}
    			}
    			yield();
    		}
    	}
    
    }
  5. public class ThreadDemo {
    	public static void main(String[] args) {
            List<Integer> list=new ArrayList<>();
            new Bear("X1", list).start();
            new Bee("1", list).start();
            new Bee("2", list).start();
            new Bee("3", list).start();
            new Bee("4", list).start();
            new Bee("5", list).start();
            new Bee("6", list).start();
            new Bee("7", list).start();
            new Bee("8", list).start();
            new Bee("9", list).start();
            new Bee("10", list).start();
            new Bear("X2", list).start();
    	}
    }

    作業2:取字符串最大子串


  6. public class StringDemo {
    	
    	public static void main(String[] args) {
    		String s1="efgh";
    		String s2="bdsdcaaa";
    		System.out.println(getMaxSub(s1, s2));
    	}
    
    	public static String getMaxSub(String s1, String s2) {
    		if (s1 == null || s2 == null) {
    			return null;
    		}
    		if (s1.length() == 0 || s2.length() == 0) {
    			return "";
    		}
    		if (s1.length() >= s2.length()) {
    			s1 = (s1 + s2).replaceAll("^" + s1, "");
    			s2 = (s1 + s2).replaceAll(s2 + "$", "");
    		}
    		String sub = null;
    		for (int i = 0; i < s1.length(); i++) {
    			sub = s1.substring(i);
    			if (s2.contains(sub)) {
    				return sub;
    			}
    		}
    		return null;
    	}
    }

    作業3:單線程中使用StringBuffer和StringBuilder性能是一樣的

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