您好,登錄后才能下訂單哦!
筆記部分:
創建線程方式
-----------------
1.Thread
2.Runnable{public void run();}
class Man extends Person implements Runnable{
public void run(){
...
}
}
new Car().start();
new Thread(new Man()).start();
eclipse
---------------
alt + ///代碼輔助
alt + 上箭頭//向上移動一行
alt + 下箭頭//向上移動一行
alt + shift + 上箭頭 //向上復制一行
alt + shift + 下箭頭 //向下復制一行
ctrl + D//刪除一行
String
-----------------
1. == //判斷是否是同一對象。判斷對象的內存地址。
2. equals //是判斷兩個對象內容是否相同。
split(String reg); //按照指定的字符串進行拆分,返回值數組。
substring(int start); //取子串操作,指定起始索引之后的所有字符
substring(int start,int end);//取子串操作,指定起始索引和結束索引之間的全部字符,
//包含起始索引,不含結尾索引。[a,b)屬于半開半閉區間。
byteByte //包裝類
shortShort
intInteger
longLong
floatFloat
douleDouble
booleanBoolean
charCharacter
byte b = 127 ;
Byte b = new Byte(127);
StringBuffer
字符串緩沖區
StringBuffer是字符串變量,它的對象是可以擴充和修改的。
append方法可以追加字符串,字符,對象等
和String相比:當String方法執行Sting=String+i等情況時,實際上String對象是不可改變對象,因此不斷地在創建對象,并字符串池中也不斷增加,原來對像再被回收,String執行效率低。
StringBuffer中的方法是被synchronized修飾的,是同步的,線程安全的,同一時間只有一個對像可以執行,鎖是執行時的當前StringBuffer對象
StringBuilder沒有被synchronized修飾的,非同步的
性能不一致,StringBuilder在每次訪問的時候不需要判斷對像鎖是否被占用,性能更好效率更高。
作業部分:
1.蜜蜂和熊的生產消費關系,熊在蜂蜜滿10斤吃掉。蜜蜂一次生產一斤蜂蜜,且蜜蜂生成一斤蜂蜜花費的時間是10s。
十只蜜蜂和兩只熊。
代碼:
package com.work.ten; class Bear extends Thread{ private FengMi fengmi; private String bearname; public Bear(FengMi fengmi,String bearname){ this.fengmi=fengmi; this.bearname=bearname; } public void run(){ while(true){ synchronized(fengmi){ if (fengmi.getFengmiWeight()<10) { try { fengmi.wait(); } catch (Exception e){ } } else if(fengmi.getFengmiWeight()>=10&&fengmi.getFengmiWeight()%10==0){ fengmi.ChiFemgmi(); System.out.println("10 斤蜂蜜被"+bearname+"吃掉,剩余"+fengmi.getFengmiWeight()+"斤蜂蜜"); try{ fengmi.notifyAll(); } catch(Exception e){ } } } yield(); } } } class FengMi { private static int fengmiWeight=0; //蜜罐中蜂蜜數量 private final int fengmiWeightMax=20; //蜜罐中蜂蜜數量上限 public int getFengmiWeight() { return fengmiWeight; } public int getFengmiWeightMax() { return fengmiWeightMax; } public void CreateFemgmi() { //生產蜂蜜 this.fengmiWeight += 1; } public void ChiFemgmi() { //吃蜂蜜 this.fengmiWeight -=10; } } class Bee extends Thread{ private FengMi fengmi; private String beename; public Bee(FengMi fengmi,String beename){ this.fengmi=fengmi; this.beename=beename; } public void run(){ int i=1; while(true){ synchronized(fengmi){ if(fengmi.getFengmiWeight()<fengmi.getFengmiWeightMax()){ if(fengmi.getFengmiWeight()==0){ try{ fengmi.CreateFemgmi(); System.out.println("蜂蜜采集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜"); fengmi.notifyAll(); Thread.sleep(10); System.out.println("經過10ms,蜜蜂休息好了"); } catch(Exception e){ } } else { if (fengmi.getFengmiWeight()%10==0){ try{ fengmi.CreateFemgmi(); System.out.println("蜂蜜采集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜"); fengmi.notifyAll(); Thread.sleep(10); System.out.println("經過10ms,蜜蜂休息好了"); } catch(Exception e){ } } else { try{ fengmi.CreateFemgmi(); if(fengmi.getFengmiWeight()%10==0){ System.out.println("蜂蜜采集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜,熊可以來采了"); } else System.out.println("蜂蜜采集好了,目前一共"+fengmi.getFengmiWeight()+"斤蜂蜜"); fengmi.notifyAll(); Thread.sleep(10); System.out.println("經過10ms,蜜蜂休息好了"); } catch(Exception e){ } } } } else { System.out.println("蜂蜜滿了"); try{ fengmi.wait(); } catch(Exception e){ } } } i++; yield(); } } } class BeeBearModel2{ public static void main(String[] args){ FengMi fengmi=new FengMi(); Bear bear1=new Bear(fengmi,"Bear1"); Bee bee1=new Bee(fengmi,"Bee1"); Bee bee2=new Bee(fengmi,"Bee2"); bear1.start(); bee1.start(); bee2.start(); } }
作業1運行結果(部分):
蜂蜜采集好了,目前一共18斤蜂蜜
經過10ms,蜜蜂休息好了
蜂蜜采集好了,目前一共19斤蜂蜜
經過10ms,蜜蜂休息好了
蜂蜜采集好了,目前一共20斤蜂蜜,熊可以來采了
經過10ms,蜜蜂休息好了
10 斤蜂蜜被Bear1吃掉,剩余10斤蜂蜜
蜂蜜采集好了,目前一共11斤蜂蜜
經過10ms,蜜蜂休息好了
蜂蜜采集好了,目前一共12斤蜂蜜
經過10ms,蜜蜂休息好了
蜂蜜采集好了,目前一共13斤蜂蜜
經過10ms,蜜蜂休息好了
作業2
取出兩個字符串中最大的公共子串。
package com.work.nine; public class Find { private String checkString1; private String checkString2; public String getCheckString1() { return checkString1; } public void setCheckString1(String checkString1) { this.checkString1 = checkString1; } public String getCheckString2() { return checkString2; } public void setCheckString2(String checkString2) { this.checkString2 = checkString2; } public Find(String checkString1,String checkString2){ this.checkString1=checkString1; this.checkString2=checkString2; } public String FindMaxPublicString(boolean result){ if(checkString1==null||checkString2==null) return ""; else{ String temp=this.checkString2; if(result){ temp=temp.toLowerCase(); String String1Lower=this.checkString1.toLowerCase(); String String2Lower=this.checkString2.toLowerCase(); if(String1Lower.equals(String2Lower)) return this.checkString1; else{ while(!String1Lower.contains(temp)){ temp=temp.substring(0, temp.length()-1); } return temp; } } else{ if(this.checkString1.equals(this.checkString2)) return this.checkString1; else{ while(!this.checkString1.contains(temp)){ temp=temp.substring(0, temp.length()-1); } return temp; } } } } } package com.work.nine; class MaxPublicStringDemo{ public static void main(String[] args){ Find find1=new Find("ABCDEFG",""); Find find2=new Find("ABCDEFG","ABCDEFG"); Find find3=new Find("ABCDEFG","HIGKLMN"); Find find4=new Find("ABCDEFG","AB"); Find find5=new Find("ABCDEFG","ab"); Find find11=new Find("ABCDEFG","AABBCCD"); System.out.println("最大的公共子串為"+find1.FindMaxPublicString(false)); System.out.println("最大的公共子串為"+find2.FindMaxPublicString(false)); System.out.println("最大的公共子串為"+find3.FindMaxPublicString(false)); System.out.println("最大的公共子串為"+find4.FindMaxPublicString(false)); System.out.println("最大的公共子串為"+find5.FindMaxPublicString(false)); System.out.println("最大的公共子串為"+find11.FindMaxPublicString(false)); System.out.println("--------------------------------------------"); Find find6=new Find("ABCDEFG",""); Find find7=new Find("ABCDEFG","ABCDEFG"); Find find8=new Find("ABCDEFG","AACCEEG"); Find find9=new Find("ABCDEFG","AB"); Find find10=new Find("ABCDEFG","abcdefg"); System.out.println("最大的公共子串為"+find6.FindMaxPublicString(true)); System.out.println("最大的公共子串為"+find7.FindMaxPublicString(true)); System.out.println("最大的公共子串為"+find8.FindMaxPublicString(true)); System.out.println("最大的公共子串為"+find9.FindMaxPublicString(true)); System.out.println("最大的公共子串為"+find10.FindMaxPublicString(true)); } }
結果:
最大的公共子串為
最大的公共子串為ABCDEFG
最大的公共子串為
最大的公共子串為AB
最大的公共子串為
最大的公共子串為A
--------------------------------------------
最大的公共子串為
最大的公共子串為ABCDEFG
最大的公共子串為a
最大的公共子串為ab
最大的公共子串為ABCDEFG
作業3
StringBuffer是線程安全的,StringBuilder不是線程安全。單線程訪問情況下,性能是否一致?
性能不一致,StringBuilder在每次訪問的時候不需要判斷對像鎖是否被占用,性能更好效率更高。
作業4
完成8種基本數據類包裝類的練習,完成自動拆裝箱操作。
package com.work.nine; public class chaizhuang { public static void main(String[] args){ // byte類型的自動裝箱與拆箱 Byte b1 = 1; byte b2 = b1; System.out.println("Byte " + (b1 == b2)); // Short類型的自動裝箱與拆箱 Short s1 = 1; short s2 = s1; System.out.println("Short " + (s1 == s2)); // Integer類型的自動裝箱與拆箱 Integer int1 = 1; int int2 = int1; System.out.println("Integer " + (int1 == int2)); // Long類型的自動裝箱與拆箱 Long long1 = 1L; long long2 = long1; System.out.println("Long " + (long1 == long2)); // Float類型的自動裝箱與拆箱 Float f1 = 3.1415f; float f2 = f1; System.out.println("Float " + (f1 == f2)); // Double類型的自動裝箱與拆箱 Double d1 = 3.1415d; double d2 = d1; System.out.println("Double " + (d1 == d2)); // 字符類型的自動裝箱與拆箱 Character c1 = 'a'; char c2 = c1; System.out.println("Character" + (c1 == c2)); // Boolean類型的自動裝箱與拆箱 Boolean bool1 = false; boolean bool2 = bool1; System.out.println("Boolean " + (bool1 == bool2)); } }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。