单例模式,异常,栈 队列

包的定义与使用
1、包的定义:在.java文件首行用package 包名称即可。
包的导入:import 包.类(只能导入一个类),导入多个类用通配符 * ;
类使用class 和public class的区别: (1)public class 文件名必须与类名保持一致,如果希望一个类被其他类访问,则必须定义为public class。(2)class 文件名可以与类名不一致,在一个*.java中可以定义多个类,但这个类不允许被其他包访问。

在这里插入图片描述
2.设计模式:
单例设计模式:一个类只允许产生一个实例化对象。

饿汉式:只要加载了该类,就会产生一个对象。(线程安全的单例化模式)

class Message111{
    private final static Message111 INSTANCE =new Message111();
    private Message111(){ }
    public static Message111 getInstance(){
        return INSTANCE;
    }
    public void print(){
        System.out.println("hehe");
    }
}
public class Message{
    public static void main(String[] args) {
        Message111 message111=null;
        message111=Message111.getInstance();
        message111.print();
    }
}

懒汉模式:去使用类的对象时才会产生实例化对象。(线程不安全的单例化模式)

    class Message111{
        private static Message111 instance;
        private Message111(){ }
        public static Message111 getInstance(){
            if(instance==null){
                instance=new Message111();
            }
            return instance;
        }
        public void print(){
            System.out.println("hehe");
        }
    }
    public class Message{
        public static void main(String[] args) {
            Message111 message111=null;
            message111=Message111.getInstance();
            message111.print();
        }
    }

面试题:设计一个单例程序,说明程序特点。
特点:构造方法私有化,外部无法产生新的实例化对象,只能通过static方法取得实例化对象。

异常与捕获
在这里插入图片描述
所有异常都是由Throwable继承而来的,Exception分为RuntimeException和IOException。
出现异常会导致程序终止执行。

可以用try…catch, try…finally,try…catch…finally对异常进行处理(不管程序出不出现异常finally修饰的语句都要执行)
面试题:throws与throw的区别:
throws关键字:该方法出现问题后不希望进行处理,就是用throws抛出。(在方法声明上使用,告诉用户本方法可能产生的异常,同时该方法可能不处理此异常)
throw关键字:人为进行异常的抛出,用于方法内部。
面试题:Exception与RuntimeException的区别,请列举几个常见的RuntimeException
(1)Exception是RuntimeException的父类,使用Exception定义的异常都要求必须使用异常处理,而使用RuntimeException定义的异常可由用户选择性的进行异常处理。
(2)常见的RuntimeException: ClassCastException、NullPointerException等。

自定义异常类可以继承的两种父类:Exception、RuntimeException.

时间复杂度、空间复杂度
时间复杂度:算法中基本操作的执行次数。
空间复杂度:一个算法在运行过程中临时占用存储空间大小的度量。
使用大O渐进法表示,推导大O阶的方法:(1.)用常数1取代运行时间中的所有加法常数。(2.)在修改后的运行次数函数后,只保留最高阶。(3.)如果最高阶系数不是1,则去除这个最高阶项的系数。
线性表和链表
线性表:n个具有相同特性的数据元素的有限序列
栈:是一种特殊的线性表,进行插入与删除的一端叫栈顶(Top永远指向可以存放数据元素的下标)栈中的元素遵守后进先出的原则。栈一般用数组实现。
在这里插入图片描述
队列:遵循先进先出的原则。进行删除操作的一端叫队头,进行插入操作的一端叫队尾。一般使用链表实现。
栈和队列面试题

  1. 括号匹配问题。(一个栈,遇到左括号入栈,遇到右括号出栈,看是否匹配)
  2. 用队列实现栈。(两个队列,出栈时将有数据的队列(除最后一个数据)出队列到另一个队列中)
  3. 用栈实现队列。(两个空栈,插入数据时给一个空栈入栈,删除数据时有元素的栈出栈,放在另一个空栈里再出栈)
  4. 实现一个最小栈。(两个栈MinStack、Stack)
  5. 设计循环队列。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值