java3_java3

注解:

不影响程序的运行,可以当做注释,也能被别的程序读取

内置注解:

@Override告诉去检查这是不是在重写方法,若不是则报错

66d65ea10f3b75f7117c671f9d2b5184.png

@Deprecated:能调用但是不建议调用

SuppressWarnings:不再显示警告信息

0489ebfca0fedf567406a4dbb8e12858.png

e2f356b785e61c060699b34fb4cd5b25.png

zzz

自定义注解:

5e4143290f6b26352dae97c036af5e2c.png

@Target:设置注解范围

下图 @Target:表示该注解只能用于方法前面

80b40036de1eb5b0acb4f8b0194dba91.png

393bc52d166e1379aa27e9c77fade290.png

@Retention

b48a93f0be6fb8492d21027d5e4b6a96.png

下图此处表示:可以加到类和方法前面:

f5268f7cd725071da51a109b29b73440.png

定义参数变量和数组,及默认值:

92556c6823ebe2557d3aeb95041ed3ab.png

63f5eca26eb82d0206e1fccabed2062d.png

如果自定义注解只有一个参数且名字为value:

b6a81a9fd4b22e5aaafc34ba7384fdff.png

7dd6c01c326af4f189146eb9e2ca667d.png

反射:

Class对象及获取方法:

所有int[]对应一个Class对象:

e75c28ded484d0cd8c01cea3040cf852.png

e1e4177f5bd839a92a69f278eef39f6f.png

99a44f01e3e3a5530e91e9f5bb6dae2f.png

获取类的信息:

794c510f146a9149b36691119395d4f9.png

ae7d3077e817e40d86b385bf26f3018e.png

906faa6189bcb677497cdde6946bb739.png

3382703a5e51d4eb2db0ea19ebf48d4c.png

若构造方法被人为定义了,则编译器不会再自己添加了

调用方法,构造对象:

72b0826100bdd7479a59f2fdb3fb33eb.png

15c2f9121a2ec64361fed827d72bda82.png

setAccessible:可以访问private属性了

60a23d2d924442a46d79bdd9082315fe.png

操作泛型:

2ab234bc4789fa2e9c75621be0d0d4c3.png

f76a7c9576af9feaed9bd788fc4f8d1b.png

操作注解:

6d03c5edcc5cafcab8ad351959e40058.png

04f3d8eca0496ca1951a733950ba8017.png

e4fd123743bc998d3346212e3d238d61.png

动态编译:

37150f69cc465ed9b103c7822c4463ff.png

d37dcafa8943e0be09a68b2cc4981aaf.png

新建文件:

d3b3f53c1e43b84303917792a76ddc76.png

7c28c2a5c1777c15c19da7639818b674.png

499884c978fca825fda60e60219e071a.png

运行:

25589cbda472292619d8f0accf012f8c.png

或通过反射运行:

invoke第一个参数是哪个对象在调用方法,有main是static,就没有对象,对是null:

ba5d316599d52eb50d344a127d6953c8.png

js是解释性语言

执行js代码:

04a6e68a6142567e776774528755e56b.png

放入engine中的变量msg可以被java操作,也可以被js操作。

最后2行:js改变了msg的值,然后通过java来获取值

578cf26a305025eef45afed8ca4a34a4.png

3e4e4b334015f3063f87cac315dfff1e.png

c549296ec51624263ea7cd6b060d00cf.png

e09e04132f7973f2c2178cc20737ce73.png

新建js文件并执行:

589c5cc9a97f7b3ffbd979e52bb2b19e.png

a8388320b97edb244752c7ac364ba99d.png

字节码操作:

17cf4db430bd6310e9e5043a73c0b18d.png

使用javassist类库造一个java文件并编译:

先导入javassist.jar

f73b71e8145f1433338b78f695c04e4c.png

6d666223d58dbd95b253b2e616746cdb.png

391b9cae748830999676cdf09818d9a2.png

c2a6bd4d3f133140a2f4ddafb0ec5a26.png

生成.class文件:

22d039661baab10eafc41f5cd1d9b336.png

利用XJad反编译:

902e2df9f2a2b6cf6f68b5639691d9ff.png

获得指定类的信息:

5e035920615ceeee999f38878e128176.png

自定义方法并加入到指定类中:

7f9dcad795f40a6faba9f9f54b4914e7.png

调用它:

b64a88ed6e143f213ba9f29ffa8d0197.png

修改指定类的方法体:

f65e8a0f5ee80e4e02db64d678a94ba1.png

46dac1ffd38082785d772cbbd53aaad4.png

给指定类添加属性和set,get方法:

f625040822f879647af3cc499c82c8ce.png

获得构造器:

d7bbc092d70c873b14cb505e83cd4bfe.png

获得注解:

2b96338e8b7939bcd8c65ac08f11f4e0.png

a3d2ae1ff81d42de285519c4f27de6ba.png

设计模式需要遵守的七大原则:

单一职责:只做一件事

e35f6229cf181392c363e5208903b40d.png

db253017d57dbdf8b0393e4a3c9b42e5.png

接口隔离原则:

44d05324741a858ca560ffa0c1d74430.png

依赖倒转原则:

多与接口发生依赖而不是具体的类

e151598509fbf5200179d9a7c7767fc7.png

8fbf4bc2bb5ce120b522aa9dc9e499f9.png

deb0dbea0e7f61dbf279b852e8603c82.png

d089e2478fc35f5514c37d53a4987994.png

里氏替换 :

d705bef0cb38d2b8c745c4705537ff54.png

9ff21c7ba14392e0676b846ad30678da.png

4081d2796bf79e5e69714c76f1dd7615.png

6bdf7d7f4fad1f3ae0c8a3f5a491eba1.png

d0b896b92031a19b920027760abcd306.png

开闭原则(ocp):

创建者可以添加功能,但是使用者的代码不需要改动。

ded061e7817daed1a71dccdbc9cad741.png

e978ddd7698ae02f90b0b92d376ae699.png

ede43c6f4d4ea6e53292eec64a784763.png

239994b61d0109506319486984b8fced.png

2562d0a0550eeec39d22b9a9b8b42198.png

迪米特法则:

cd1e5143033c143aef21e00f2162a30d.png

合成复用:

052d4aa9c886ac975c5935d563f5f18b.png

B若是想要A的方法:

0523735849fc4d25dc1f9ad44fd0a5f7.png

UML:统一建模语言:

符号:

ad719cf79f86967f25fd41f335952a2d.png

74602447ec360f1339b95bf3a00d7091.png

依赖:

509a4aabe9d449630576cab5913ec205.png

a5e0a96419d918889098bfd8256b6917.png

1a2a0961c917a56d81a990e95f51d6e5.png

泛化:

a276bb16e814445371c36ac188df33d3.png

07f3515dd989d08f3fcdd69fe3ca25ee.png

a91e583931569b31f75b8868f4ee3ebf.png

实现:

5a8d8d85c48e41636785ab669f9ab0e9.png

0cb505aa59e1abd7eb223c6dad1fdb45.png

关联:

b79113a33ac7643168aa6e887c89105b.png

聚合:

7db16ce1137e8bb9ba3ee0d64198a8e2.png

81ba622425315fbcf3379049473d21d8.png

组合:

1fee318a562acc9a0c2299b4608530e7.png

c2fca385b6f09d8b031e8d3542c430fd.png

d022906e8ec0cde6b988c25b5223a02b.png

4c9a97017c895bfc15700ba5a6df3a01.png

2073b1b60d3cd56c617982fcdacf6d4a.png

设计模式:

823487259ede51876c1c53a53d1877f1.png

单例:一个类只有唯一一个对象实例

b9df2697cc6825670219eee2c192eccf.png

饿汉式(静态常量):

eadbbef8934f32b6ca5172fd9272e24e.png

c9e725d8943b52639cac15c120741d31.png

饿汉式(静态代码块)

1de3fa6e443b3f79aff2e9e9c31a0f0e.png

以上缺点是:无法实现懒加载

懒汉式(线程不安全):

da976b4c2188c73d69e00d48135d272f.png

7693acb668f3465c48269d2ecd1c7263.png

懒汉式(线程安全):

7a7d771d9ab50337ea8d3d45560f4986.png

49b52b0528c06433683f4b04fc621b24.png

双重检查(2个if)(推荐):

7b935a8806a8a6c2f4f3aa73566b2910.png

静态内部类(推荐):

在加载外部类时不会加载静态内部类从而实现懒加载,只有当调用getIstance方法时才会加载它。

a84cb668227f40f995bee51a8d36f81e.png

2ab1ef307da99d2e65d4767c68a0670a.png

枚举(推荐):

4acf7b64970db844dc262277a7246242.png

032522e4ea583f59cc0ed9b9009a0683.png

dd1f0580da7e44b81393caf2984900f2.png

简单工厂模式:

不直接自己生产东西,而是委托一个工厂来生产东西, 到时候直接调用工厂的方法

9c72bc82c0532566583a32f9b59420e5.png

b32f5adda8a4fb70d667b605cb1970d1.png

Pizza类:

cb600e79035384dd850c37af988bef73.png

具体的Pizza:

1c00d9aa7ad8c1dd00b6299e49abf54c.png

创建一个专门用于生产某种pizza的工厂类:

bf8d48f9abbfd9436d3866d6175767d4.png

建立一个订购pizza的类:

81ea140e5a578575fa90f8047bdc0301.png

0c8dd6c4d69cbaae0e3bf7d2b24bc3d9.png

bd76b61793e17ea5f5f4a282f8f7e8ce.png

参数是System.in

9f3377b5de75c2eda62bde6b13f5de32.png

建立一个类用于发出订购请求 :

439b049c6d7fdb2743c25c58f8511842.png

使用静态进行变形:

4f6a80f296bf77772b33fb38b87abb01.png

585f9ef4e995e7d82f79e1ef280b3371.png

1b47786760f88c54d7c7a4842fa9f4c5.png

65b59ed53fed966abf576b83398ddd65.png

工厂方法模式:

一个抽象工厂,多个具体工厂来实现方法

3dd83a2bd6c22ef793238a78f37b1c68.png

c8891bc6e86a0b6a718f7eb5cf4fe0a5.png

类图:

92ade1df7210896ce7235e107f44d7c8.png

具体的pizza:

0e78bdae2530e1be9eda06c05b8e1b51.png

抽象工厂:

3da79a990f254b73e2a6d30258efdfa1.png

具体工厂:

44151568430cad1599e423ce53eb9e13.png

执行:

403905fce1151ec4d22075ebba5bfda1.png

抽象工厂模式:实现上面需求

f5d8d9a354cc377ab27e0957265b5f40.png

类图:

一个工厂接口,多个具体工厂实现“”

41132a2ee0e49f73436db696f3d0005d.png

接口:

b7ec23ee743f7bce9e7284fde0b1ab3e.png

工厂子类:

9a6d5de5107dde706b6bc3fd1c496912.png

44feb5351b90ac8dc64ea7612cd813fe.png

bc69999d8e35f8508c26c525781e0638.png

3d6604a889f9589db05d0116c661ece4.png

应用:

34821fbbe194e9e5c35c115669e4339d.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值