JAVA学习笔记

方法重写

  • 指子类重写父类方法,实例变量和静态方法跟随左边,非静态类方法跟随右边;
    • 方法名和参数必须相同
    • A a = new A();
    • B b = new A();
    • 如果子类重写了相同的方法,调用时会调用子类方法。
  • 构造方法是与类同名的函数方法,子类重写时,拥有的构造方法父类必须拥有。

重载

  • 同类中参数不同函数名相同,调用时会自动调用对应的。

杂项记录

  • instanceof(A,B) A是否时B的子类 A指代的是实际类而不是引用类
  • hashmap底层实现 数组链表+红黑树

多线程

  • 实现一个类 继承thread方法,实现run方法,然后new出对象,对象.start()运行线程 属于继承
  • 实现runnable接口,实现run方法 然后使用 new thread(类).start实现运行,属于实现接口
  • 实现callable接口,实现call方法,创建ExecutorService服务对象se 使用se.submit提交方法 有返回值

  • yeild 让线程重回就绪态,cpu调度哪个还是看自生调度 Thread.yeild();
  • join 让线程强制执行 Thread.join();

静态代理模式

  • 真实对象和真实对象都要实现同一个方法

注解:

  • @target 表示在哪些位置有效 ElementType.type 类 methon 方法 field 变量等
  • @Retention 表示在什么阶段有效 RetentionPolicy.source 源码有效 Runtime 运行时有效 class 编译时有效

初始化:

  • 主动引用一定会发生初始化:
    1. 虚拟机启动时,初始化main方法所在的类
    2. new新对象时
    3. 调用类的静态成员和静态方法
    4. 使用反射
    5. 初始化一个类,如果父类没被初始化,则会先初始化父类
  • 被动引用(不会初始化):
    1. 当访问静态域,只有真正声明这个域的类才会被初始化(比如子类引用父类的静态变量只会让父类初始化)
    2. 通过数组定义引用不会初始化
    3. 常量引用不会发生初始化(已存在常量池)

类加载到内存过程:

  • 先加载到常量区,各个类和静态方法,变量
  • 然后堆中加载,产生对应对象,链接
  • 每个对象堆中的class都只会有一个,代表该类的结构和方法
  • 初始化:实现才会赋值
  • 加载器:
    • 引导类加载器:用C++编写,无法获取在jre/rt.jar下
    • 扩展类加载器:jre/lib/ext下的jar包
    • 系统类加载器:常用

  • spring框架扫描Service
  • SpringMVC扫描controller
  • mybatis扫描Dao
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值