JAVA常见知识点整理

目录

一、JAVA

JAVA常数默认类型

  • 整数型默认为int类型
  • 带小数的默认为double类型

== 访问权限控制符==

  • 权限从大到小排名: public > protected > default(包访问权限) > private
  • public : 随处都可以访问
  • protected:同一包和不同包的子类
  • default:同一包下
  • private:同一个类中

成员变量、类变量、局部变量的区别

  • 类变量:被static修饰的变量,被所有类实例共享
  • 成员变量:1、定义在类中,整个类中都可以被访问 2、随着对象的建立而建立,随着对象的消失而消失 3、成员变量有默认初始化的值
  • 局部变量:1、定义在局部范围内,例如函数内、语句内,只在所属的范围有效 2、存储在栈内存中,随着所属范围的消失而消失 3、没有初始化值

重载/重写

  • 重载:同名不同参,返回值和修饰符无关(可以在同一个类或者子类中被重载)
  • 重写:同名又同参,返回值相关,修饰符不能更严格(只能在子类中被重写)

final

  • final修饰的方法不能被重写,可以被重载
  • final不能修饰抽象类

接口

  • 接口中方法的默认修饰符是public abstract,不能有方法体
  • jdk8之后接口方法的修饰符可以是default和static,但是必须有方法体

线程

  • start()是启动动作,线程此时就绪,还需等待cpu的调度
  • run()方法才是线程获得cpu的时间,开始执行的点
  • 创建线程的两种方法:
    • 从Java.lang.Thread 类派生一个新的线程类,重写run()方法
    • 实现Runnable()接口,重写Runnable接口中的run()方法

StringBuilder&StringBuffer

  • StringBuilder线程不安全(不能同步访问),StringBuffer线程安全
  • StringBuilder速度快,StringBuffer速度慢
  • 都是字符串变量,改变时不会产生新的未使用对象

Object类中含有的常见方法

  • clone() 创建一个该对象的副本并返回
  • toString()返回该对象的字符串表示
  • notify()启动此对象监视器上等待的单个线程
  • notifyAll()启动此对象监视器上等待的所有线程
  • wait()当前线程失去操作权限,进入等待序列
  • finalize()当垃圾回收器确定不存在该对象的更多引用时,由对象的垃圾回收器调用此方法

HashMap

  • key不能为空,value可以为空

JSP的9个内置对象

  • pageContext 表示页容器 EL表达式、 标签 、上传
  • request 服务器端取得客户端的信息:头信息 、Cookie 、请求参数 ,最大用处在MVC设计模式上
  • response 服务器端回应客户端信息:Cookie、重定向
  • session 表示每一个用户,用于登录验证上
  • application 表示整个服务器,开始于服务器的启动,结束于服务器的关闭;实现了用户间的数据共享,可存放全局变量,是ServletContext类的实现
  • config 取得初始化参数,初始化参数在web.xml文件中配置
  • exception 表示的是错误页的处理操作
  • page 如同this一样,代表整个jsp页面自身
  • out 输出 ,但是尽量使用表达式输出

常见注解功能

  • @Override:指明被注解的方法需要覆写超类中的方法
  • @Deprecated:可以修饰类,方法,变量,表示注解的类,方法,变量不建议使用
  • @SuppressWarning:抑制编译器编译时产生警告

JAVA并发编程的三个概念

  • 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行
  • 可见性:多个线程访问一个变量,当一个线程改变这个变量,其他线程能够立刻看到(当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值)
  • 有序性:程序执行的顺序按照代码先后顺序执行(可以通过synchronized和Lock来保证有序性,很显然,synchronized和Lock保证每个时刻是有一个线程执行同步代码,相当于是让线程顺序执行同步代码,自然就保证了有序性)

二、算法

三、数据结构

四、计算机网络

五、SPRING

六、设计模式

单例模式

  • 单例模式属于创建型模式(创建对象时隐藏对象创建的逻辑,使得在判断给定实例需要创建哪些对象时更加灵活)。
  • 单例类特点:
    • 单例类只能有一个实例
    • 单例类必须自己创建自己的实例
    • 单例类必须给所有其他对象提供这一实例
  • 单例模式分类:
    • 饿汉式
      • 普通饿汉式实现代码1:

        public class Singleton {
            private static Singleton singleton = new Singleton();
            private Singleton(){
        
            }
            public static Singleton getInstance(){
                return singleton;
            }
        
      • 普通饿汉式实现代码2:

        public class Singleton {
            private Singleton(){};
            private static Singleton singleton;
            static {
                singleton = new Singleton();
            }
            public static Singleton getInstance(){
                return singleton;
            }
        }
        
      • 枚举型实现代码(唯一不会被破坏的单例实现模式):

        public enum Singleton {
             Instance;
        }
        
    • 懒汉式
      • 普通懒汉式实现方式:

        public class Singleton {
            private Singleton(){}
            private static Singleton singleton;
            public synchronized static Singleton getInstance(){
                if(singleton == null){
                    singleton = new Singleton();
                }
                return singleton;
            }
        }
        
      • 双重检查式:

        public class Singleton {
            private Singleton(){}
            private static Singleton singleton;
            public static Singleton getInstance(){
                if(singleton == null){
                    synchronized (Singleton.class){
                        if(singleton == null){
                            singleton = new Singleton();
                        }
                    }
                }
                return singleton;
            }
        }
        
      • 静态内部类实现:

  • 单例模式破坏方式
    • 序列化破话单例模式:
    • 反射破坏单例模式:
  • 破坏方案解决:
    • 序列化破坏解决:
    • 反射破坏解决:
上一篇:开发常用小demo 整理


下一篇:强连通分量(Tarjan)