动态代理
枚举 (Enum类)
反射
多线程(Thread和Runnable的区别)
构造方法
java的main方法
java中static ,final
synchronized--多线程中的同步 - 在编写一个类时,如果该类中的代码可能运行与多线程环境下,就要考虑同步问题了。会同时被多个线程访问的资源,就是竞争资源,也称为竞争条件。对于多线程共享的资源我们必须进行同步,以避免一个线程的改动被另一个线程所覆盖。
成员变量与局部变量:
1、成员变量:在类体中定义的变量为成员变量,作用范围(scope)是整个类,只要在这个类中都可以访问到它。
2、局部变量:在一个方法或方法中的代码块(code block)中定义的变量。局部变量是在方法或代码块被执行的时候被创建,在方法或代码块结束时被销毁。局部变量在进行取值操作前必须被初始化或赋值,否则出现编译错误。
对象---“按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词。”
从这一句话就可以理解到对象的本质,简而言之,它就是类的实例,比如所有的人统称为“人类”,这里的“人类”就是一个类(物种的一种类型),而具体到每个人,比如张三这个人,它就是对象,就是“人类”的实例。
Java类和对象 详解(一)---https://blog.csdn.net/wei_zhi/article/details/52745268
Spring实战】----spring security4.1.3配置以及踩过的坑------https://blog.csdn.net/honghailiang888/article/details/53520557
Re:从零开始的Spring Security Oauth2(一)-----https://blog.csdn.net/u013815546/article/details/76898524
《Java编程思想》阅读笔记一----https://www.cnblogs.com/cpacm/p/5568405.html
再读《Java编程思想 》--https://blog.csdn.net/honghailiang888/article/details/70310887
java动态代理实现与原理详细分析------https://www.cnblogs.com/gonjan-blog/p/6685611.html
深入理解Java并发之synchronized实现原理--------https://blog.csdn.net/javazejian/article/details/72828483
详解Java反射各种应用----------https://www.cnblogs.com/qifengshi/p/6267511.html
synchronized作用范围及用法-------https://www.cnblogs.com/welcoming/p/3375664.html
java线程(上)Thread和Runnable的区别------https://www.cnblogs.com/yangdy/p/5274455.html
java中为什么需要public static void main(String[] args)这个方法------https://blog.csdn.net/aym_fuhong/article/details/52437740
Java基础之构造方法及其应用-----https://www.cnblogs.com/feia1236/p/5913991.html
Java Static和Final使用总结----https://www.cnblogs.com/panning/p/5686605.html
Java 枚举(enum) 详解7种常见的用法----https://blog.csdn.net/qq_27093465/article/details/52180865
JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。
大师兄我又加上自己的理解,来帮助各位理解一下。
用法一:常量
在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。
- public enum Color {
- RED, GREEN, BLANK, YELLOW
- }
用法二:switch
JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。
- enum Signal {
- GREEN, YELLOW, RED
- }
- public class TrafficLight {
- Signal color = Signal.RED;
- public void change() {
- switch (color) {
- case RED:
- color = Signal.GREEN;
- break;
- case YELLOW:
- color = Signal.RED;
- break;
- case GREEN:
- color = Signal.YELLOW;
- break;
- }
- }
- }
用法三:向枚举中添加新方法
如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义 enum 实例。
- public enum Color {
- RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
- // 成员变量
- private String name;
- private int index;
- // 构造方法
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
- // 普通方法
- public static String getName(int index) {
- for (Color c : Color.values()) {
- if (c.getIndex() == index) {
- return c.name;
- }
- }
- return null;
- }
- // get set 方法
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getIndex() {
- return index;
- }
- public void setIndex(int index) {
- this.index = index;
- }
- }
用法四:覆盖枚举的方法
下面给出一个toString()方法覆盖的例子。
- public enum Color {
- RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
- // 成员变量
- private String name;
- private int index;
- // 构造方法
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
- //覆盖方法
- @Override
- public String toString() {
- return this.index+"_"+this.name;
- }
- }
用法五:实现接口
所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。
- public interface Behaviour {
- void print();
- String getInfo();
- }
- public enum Color implements Behaviour{
- RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
- // 成员变量
- private String name;
- private int index;
- // 构造方法
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
- //接口方法
- @Override
- public String getInfo() {
- return this.name;
- }
- //接口方法
- @Override
- public void print() {
- System.out.println(this.index+":"+this.name);
- }
- }
用法六:使用接口组织枚举
Java代码
- public interface Food {
- enum Coffee implements Food{
- BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
- }
- enum Dessert implements Food{
- FRUIT, CAKE, GELATO
- }
- }
-
/**
-
* 测试继承接口的枚举的使用(by 大师兄 or 大湿胸。)
-
*/
-
private static void testImplementsInterface() {
-
for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) {
-
System.out.print(dessertEnum + " ");
-
}
-
System.out.println();
-
//我这地方这么写,是因为我在自己测试的时候,把这个coffee单独到一个文件去实现那个food接口,而不是在那个接口的内部。
-
for (CoffeeEnum coffee : CoffeeEnum.values()) {
-
System.out.print(coffee + " ");
-
}
-
System.out.println();
-
//搞个实现接口,来组织枚举,简单讲,就是分类吧。如果大量使用枚举的话,这么干,在写代码的时候,就很方便调用啦。
-
//还有就是个“多态”的功能吧,
-
Food food = Food.DessertEnum.CAKE;
-
System.out.println(food);
-
food = CoffeeEnum.BLACK_COFFEE;
-
System.out.println(food);
-