第76節:Java中的基礎知識

標題圖
第76節:Java中的基礎知識

字數
設定環境,安裝作業系統,安裝備份,就是映象, jdk
配置環境, eclipse
下載解壓即可使用,下載 tomcat
折傭動態代理解決網站的字符集編碼問題
使用 request.getParameter()
獲得的資料是否有亂碼問題.
自定義註解
@
: @Test
等.註解就是一種資料型別
package com.dashucoding.test; import java.util.ArrayList; import java.util.List; public class TestAnnotation { // 註解含義: 聲明當前的方法是重寫的方法 @Override public String toString() { return super.toString(); } // @Test public void test01() { // 不使用 不加警告 @SuppressWarnings("unused") int i; // 讓不使用的變數,和泛型不報警告 @SuppressWarnings({ "rawtypes", "unused" }) List a = new ArrayList(); } // @Deprecated: 宣告方法是過時的方法 }
java.lang Class String java.lang.Object java.lang.String public final class String exteds Objectt implements Serializable, Comparable<String>, CharSequence
String str = "abc"; char data[]={'a','b','c'}; String str = new String(data); Object.toString() StringBuffer StringBuilder Charset Serialized Form
// 編譯期間有效 @Override @Deprecated @Suppresswarning
自己定義註解
// 定義註解 public @interface MyTest{ // 給註解定義屬性 public long time(); } 格式 public @interface 註解名稱{ public 屬性型別 屬性名稱 1() default 預設值; }
//以下註解的含義是:如果當前方法的執行時間超過1秒,會報錯 @Test(timeout=1000) @Deprecated //以下註解的含義是:宣告以下的方法是過時的方法,不建議大家使用 //@SuppressWarnings("unused") 抑制編譯器發生警告資訊 //@SuppressWarnings({ "unused", "rawtypes" }) 抑制編譯器發生警告資訊 //@Override 聲明當前的方法是重寫父類的方法
註解的屬性支援的型別有
基本資料型別(4類8種) String,Class,Annotation(註解型別),列舉型別
public class UserDao { static{ System.out.println("載入靜態程式碼段的訊息"); } @MyTest public void addUser(){ System.out.println("增加使用者"); } @MyTest public void delUser(){ System.out.println("刪除使用者"); } @MyTest public void uptUser(){ System.out.println("更新使用者"); } public void getUser(){ System.out.println("獲取使用者"); } }
註解Retention說明當前自定義註解的作用域(Class,Source,Runtime) //@Retention(RetentionPolicy.RUNTIME) 註解Target說明當前的自定義註解的目標物件 //@Target(ElementType.METHOD) public @interface MyTest { //在MyTest註解中定義成員屬性,預設值為-1 public long timeout() default -1; }
註解:自定義,要說明作用域和目標物件.
設計模式:
單例模式,工廠模式,
// 單例模式 public class Stu { privateStu() { } private static Stu stu=new Stu(); public staticStu getInstance(){ return stu; } } public class TestStu { public static void main(String[] args) { Stu stu1=Stu.getInstance(); Stu stu2=Stu.getInstance(); Stu stu3=Stu.getInstance(); System.out.println(stu1); System.out.println(stu2); System.out.println(stu3); } }
設計模式,用於解決各種問題的套路.
裝飾者模式:
要知道介面中的方法,自己定義裝飾類實現介面.傳引數,為不能繼承的實現類.
public interface ICar { public void start(); public void run(); public void stop(); } public class GoogleCar implements ICar{ @Override public void start() { System.out.println("控制谷歌的汽車啟動"); } @Override public void run() { System.out.println("控制谷歌的汽車執行"); } @Override public void stop() { System.out.println("控制谷歌的汽車停止"); } } public class TestCar { public static void main(String[] args) { ICar car=new GoogleCar(); car.start(); car.run(); car.stop(); } }
public interface ICar { public void start(); public void run(); public void stop(); } public class GoogleCar implements ICar{ @Override public void start() { System.out.println("判斷天氣是否良好"); System.out.println("判斷路況是否良好"); System.out.println("控制谷歌的汽車啟動"); } @Override public void run() { System.out.println("控制谷歌的汽車執行"); } @Override public void stop() { System.out.println("控制谷歌的汽車停止"); } } public class TestCar { public static void main(String[] args) { ICar car=new GoogleCar(); car.start(); car.run(); car.stop(); } }
public interface ICar { public void start(); public void run(); public void stop(); } public class GoogleCar implements ICar{ @Override public void start() { System.out.println("控制谷歌的汽車啟動"); } @Override public void run() { System.out.println("控制谷歌的汽車執行"); } @Override public void stop() { System.out.println("控制谷歌的汽車停止"); } } public class MyCar extends GoogleCar{ @Override public void start() { System.out.println("判斷天氣是否良好"); System.out.println("判斷路況是否良好"); super.start(); } } public class TestCar { public static void main(String[] args) { ICar car=new MyCar(); car.start(); car.run(); car.stop(); } }
public interface ICar { public void start(); public void run(); public void stop(); } public final class GoogleCar implements ICar{ @Override public void start() { System.out.println("控制谷歌的汽車啟動"); } @Override public void run() { System.out.println("控制谷歌的汽車執行"); } @Override public void stop() { System.out.println("控制谷歌的汽車停止"); } } public class MyCar implements ICar{ ICar car; public MyCar(ICar car) { this.car=car; } @Override public void start() { System.out.println("檢查天氣是否良好"); System.out.println("檢查路況是否擁堵"); car.start(); } @Override public void run() { car.run(); } @Override public void stop() { car.stop(); } } public class TestCar { public static void main(String[] args) { ICar car=new MyCar(new GoogleCar()); car.start(); car.run(); car.stop(); } }
缺點
缺點就是介面中的方法過多,導致修飾類中的方法過多
動態代理模式:
位元組碼載入器,把位元組碼檔案載入到記憶體,這類程式簡稱為位元組碼載入器.底層實現,利用io流技術.
位元組碼載入器3種.
public interface ICar { public String start(int a,int b); public void run(); public void stop(); } public final class GoogleCar implements ICar{ public void fly(){} @Override public String start(int a,int b) { System.out.println("控制谷歌的汽車啟動"); return "start...."+a+" "+b; } @Override public void run() { System.out.println("控制谷歌的汽車執行"); } @Override public void stop() { System.out.println("控制谷歌的汽車停止"); } } public class Test { public static void main(String[] args) { Class[] clazz = GoogleCar.class.getInterfaces(); Class cla=clazz[0]; //獲取ICar.class位元組碼物件上所有的方法 Method[] mds = cla.getMethods(); for (Method method : mds) { System.out.println(method.getName()); } } }
小結
自定義註解
動態代理解決網站字符集編碼
jdk
提供的三個註解作用
註解的使用
註解的定義和解析
Proxy
編寫動態代理類
類載入器的作用
自定義註解模擬 @Test
使用 @Test
對程式進行測試,使用 Junit
是單元測試的工具.什麼是註解呢, Annotation
註解是一種程式碼級別的說明.
和註釋相比,註釋是給開發人員看的,註解是給計算機提供相應的資訊.
註解到底有什麼用呢?
編譯檢查,程式碼分析,編寫文件
jdk
提供註解
@Deprecated 表示被修飾的方法已經過時了. @Override jdk5.0表示複寫父類的方法,jdk6.0表示是實現介面的方法 @SuppressWarnings表示抑制警告 deprecation 過時 rawtypes 忽略型別安全 unused 忽略不能使用 unchecked 忽略檢查 null 忽略空指標 all 忽略所有
// 方法已過期 class Test { @Deprecated public void init(){ } }
jdk 5.0 class Test1 { public void init(){} } class Test2 extends Test1{ @Override public void init(){} }
// jdk6.0 interface Test1{ public void init(); } class Test2 implements Test1 { @Override public void init(){} }
@SuppressWarnings("serial") @SuppressWarnings("null") rawtypes: 型別安全 unused: 不使用
@interface class interface enum
自定義註解
// 定義註解 @interface MyAno{ }
@interface MyAno{ public String username() default "jack"; }
屬性格式: 修飾符, 返回值型別 屬性名() [default 預設值]
修飾符: 預設值 public abstract
只能是 public abstract
返回值型別,基本型別,字串String,Class,註解,列舉
屬性名:自定義
default
預設值

效果

效果
小結
類載入器
什麼是類載入器,類載入器就是負責載入類的物件.
將 class
檔案載入到記憶體生成 Class
物件,所有的類載入器都是 java.lang.ClassLoader
的子類.
類載入器載入機制是全盤負責委託機制.
動態代理解決全站亂碼問題
request.getMethod(); 獲取當前請求型別 request.setCharacterEncoding(“utf-8”); String v=request.getParameter(name);
設計模式
- 建立型模式
- 結構型模式
- 行為型模式
工廠方法 抽象工廠 建造者模式 單態模式 原型模式
介面卡模式 橋接模式 組合模式 裝飾模式 外觀模式 享元模式 代理模式
責任鏈模式 命令模式 直譯器模式 迭代器模式 中介者模式 備忘錄模式 觀察者模式 狀態模式 策略模式 模板方法 訪問者模式
如果看了覺得不錯
點贊!轉發!
達叔小生:往後餘生,唯獨有你
You and me, we are family !
90後帥氣小夥,良好的開發習慣;獨立思考的能力;主動並且善於溝通
簡書部落格: 達叔小生
https://www.jianshu.com/u/c785ece603d1結語
- 下面我將繼續對 其他知識 深入講解 ,有興趣可以繼續關注
- 小禮物走一走 or 點贊