java学习笔记01

这篇博客详细介绍了Java编程的基础知识,包括面向对象、异常处理、集合框架、多线程和并发特性。深入探讨了重写与重载、线程同步、volatile关键字以及线程池的工作原理。同时,讲解了不同类型的集合实现,如HashMap、ConcurrentHashMap和线程安全容器的选择,以及线程池的主要参数和拒绝策略。此外,还提到了线程安全的容器、线程同步方法(如Synchronized和Lock的区别)以及线程局部变量ThreadLocal的应用。
摘要由CSDN通过智能技术生成

java学习笔记01

面向对象

面向对象是一种更优秀的程序设计方法,它的基本思想是使用类、对象、继承、封装、消息等基本概念进行程序设计。

面向对象三大特征

  1. 继承:子类继承父类,获得父类的属性和方法。
  2. 封装:将对象的实现细节隐藏,通过一个公共的方法来暴漏该对象的功能。
  3. 多态:子类对象直接赋值给父类变量,调用父类方法,指向子类实现。

重写与重载

重写发生在子父类之间,子类方法与父类方法方法名,参数列表相同,返回值小于等于父类方法,抛出异常小于等于父类方法,访问修饰符大于等于父类方法,若父类方法访问修饰符为private,则不能被重写!

重载发生在同类之中,方法名相同,参数列表不同,则构成重载的关系,与访问修饰符无关

hashCode()与equals()

hashCode用于获取散列码,equals用于比较两个对象是否相等。

如果两个对象相等,那他们的hashCode一定相等。

如果两个对象hashCode相等,这两个对象不一定相等。

Object类中提供的equals默认是用==实现的,为了进行值的比较,需要对equals进行重写。由于equals与hashCode具有联动性(保证了hashMap的精确度),所以equals重写时,也要对hashCode进行重写。

==和equals()的区别

用==进行比较时,基本数据类型比较的是值,引用数据类型,比较的是对象的地址。

equals()重写前使用的是==进行比较,重写后是对值进行比较(String、Integer等的equals都进行了重写)。

接口和抽象类

接口是一种规范,只进行约定,不提供实现;抽象类是一种模板设计,目的是代码复用。

接口 抽象类
方法 抽象方法 抽象方法+普通方法
变量 静态常量(final static) 静态常量+普通变量
构造器 不能含有构造器 可以含有(不是为了创建对象,而是让其子类调用来完成属于抽象类的初始化操作)
初始化块 不能含有 可以有
继承实现 多实现 单继承
实例化 不能被实例化 不能被实例化

java8后,接口可以含有默认方法和静态方法,方便接口扩展;java9以后接口可以含有私有方法,避免代码重复,确保可重用性,提高可读性。

interface 接口名{
   
    静态常量;
    抽象方法;
    //java8以后默认方法和静态方法
    public default void test(){
   
        System.out.println("默认方法");
    }
    
    public static String test2(){
   
        System.out.println("静态方法");
        return "Hello Word";
    }
    
    //java9以后私有方法
    private void common(){
   
        System.out.println("私有方法")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值