1.简单工厂模式1,披萨订购 传统方式解决披萨订购问题: 2.简单工厂模式2 传统方式解决披萨订购问题:违反了OCP原则 改进思路: 3.简单工厂模式3 简单工厂模式介绍: 使用简单工厂模式改进披萨订购问题代码:将工厂聚合到客户端中 新增Pizza种类时,只需要更改简单工厂即可 4.简单工厂
1.单例介绍 单例设计模式,就是采取一定的方法保证整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。 如:Hibernate中的SessionFactory 单例模式有八种实现方式: 1.饿汉式(静态常量) 2.饿汉式(静态代码块) 3.懒汉式(线程不安全) 4.懒汉式(线程安全) 5.懒
1.归并排序思想(分治:Divide-and-conquer) 将问题分成一些小问题,然后递归求解,将分的各阶段得到的答案"修补"到一起 2.归并排序时间复杂度O(nlogn) 归并排序需要额外的空间开销 3.归并排序 package 算法.排序; import java.util.Arrays; public class MergeSort { public static
1.快速排序的思想 快速排序是对冒泡排序的一种改进 基本思想(递归):通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据小(基准),然后再按此方法,对这两部分数据分别进行快速排序。 2.快速排序的时间复杂度O(nlogn) 3.快速排序的代码实现 packag
1.冒泡排序的思想 设置双重循环 i = 0; j = 0; 外层循环确定要排序的轮数:arr.length-1轮(倒数第二个元素排序完成时,数组已经有序了) 内层循环从数组的第一个位置开始,依次比较相邻的两个值,一直到到当前的数组的最后一个位置,每经过一次外层循环,下一轮比较的次数就减一,j=arr.length-i-1
B, blue D是正确的 T1-2答案: T3答案: 1,3,5,7 T4顺序插入: 思路:定位(确定插入元素的位置)+扩容(拷贝初始数组时,跳过定位点) 生成1-100的随机数: (int)(Math.random()*100)+1
1.二维数组入门 二维(two Dimensional)数组应用场景: 什么是二维数组: 输出二维数组: 关于二维数组的相关概念: 2.二维数组内存布局 动态初始化: int[][] arr = new int[3][3]; 二维数组内存布局: 二维数组引用arr,指向一个空间,空间中存放一维数组的引用地址 3.二维数组使用1 动
1.排序概述 排序是什么: 内部排序与外部排序 冒泡排序基本思想: 2.冒泡排序实现思路 3.冒泡代码实现 package 数组.冒泡排序; public class BubbleSortMy { public static void main(String[] args) { int[] arr = {24,69,80,57,13,88,23,3}; //int[] a
具体题目 韩顺平老师视频P361~P372 链接:(去看界面要求) https://www.bilibili.com/video/BV1fh411y7R8?p=362 框架图 代码 等待审核通过直接上链接
1.Date介绍(第一代日期类) java.util包下 IDEA中的properties的含义:将setXXX,getXXX后的XXX当作一个属性 2.Date应用实例 获取当前系统时间: 创建SimpleDateFormat对象,可以指定相应的格式 构造器,根据毫秒数的到时间 把一个格式化的字符串转化为对应的Date(抛出异常) 3.Calendar
System常用方法和案例: exit(); arraycopy(); currentTimeMillens();
1.Arrays排序源码解读 Arrays常用方法: Arrays.sort();方法,接口编程+动态绑定+匿名内部类 2.Arrays模拟排序 实现sort(); 3.Arrays其他方法 binarySearch();二分搜索法查找(必须排好序): 查找元素不存在时的返回值(源码分析) copyOf(); fill(); equals(); asList(); 运行类型是Arr
Math类基本介绍: Math类常用方法: 求随机数:
1.StringBuffer结构剖析 StringBuffer基本介绍: StringBuffer中有一个char[] value,用于存储,不是final,因此可以更新内容 StringBuffer的特点: String与StringBuffer的对比: StringBuffer的更新实际上是更新内容,不用每次更新地址(只有在地址不够用时,会扩容) 2.StringBuffer转换 St
1. 栈的要点 栈是一个先入后出(FILO)的有序列表。 栈限制线性表的插入和删除操作只能在一端进行。 允许插入和删除的一端,即变化的一端,称为栈顶;另一段为固定的一端,称为栈底。 2. 数组模拟栈 要点: 需要一个指针top用来指示栈顶 当top指向0时,栈拥有第一个元素;故栈空时应
1.八大Wrapper类 八种基本数据类型相应的引用类型就是包装类: 包装类的作用,可以调用类中的方法 2.装箱和拆箱 包装类和基本数据类型的互相转换,装箱拆箱 jdk5之后实现了自动装箱拆箱 手动装箱和拆箱演示: 自动装箱/拆箱的底层还是手动装箱/拆箱 3.包装类测试 练习题: 面试题
1.枚举类引出,代码模板生成 一组关联的,固定的值组成的数据,如四季 四季的特点: 用枚举解决,四季的代码设计问题: 2.自定义枚举类 枚举是什么: 枚举是一组常量的集合(大写) 枚举属于一种特殊的类,里面只包含一组有限的特定的对象 枚举的两种实现方式: 自定义类实现枚举 使用enum关键
1.四种内部类 一个类的内部又完整的嵌套了另一个类的结构,被嵌套的类称为内部类(inner class) 内部类的最大特点就是:可以直接访问私有属性,并且可以体现类与类之间的包含关系 内部类的基本语法: 内部类的划分: 2.局部内部类1 局部内部类的特点: 局部内部类是定义在外部类的局部位置
1.抽象类的引出 抽象类的由来:父类方法需要声明,但不确定如何实现 将方法声明为抽象abstract方法,类声明为抽象类 当一个类中存在抽象方法时,需要将该类声明为abstract类 抽象类一般会被继承,由子类来实现抽象方法 2.抽象类的细节 抽象方法没有方法体,因为不需要具体的实现 抽
1.final基本使用 final修饰类,方法,属性,局部变量 2.final使用细节1 final属性(常量)必须赋初始值,可以在以下三个位置赋初始值: 定义时 在构造器中(final修饰的属性是静态的,则初始化位置不能是构造器) 原因:static修饰属性,在类加载时就要赋值,构造器是在对象创建时才触发 在代码块中 疑
1.单例模式饿汉式 设计模式简介: 什么是单例模式? 某个类只存在一个对象实例,且该类只提供一个取得该对象实例的方法 单例模式的实现: 构造器私有化,防止别人new 在类的内部创建一个对象实例,私有的private static(访问方法是静态的,所以对象实例必须是静态的,不然静态方法无法访问) 提
1.代码块快速入门 代码块隐式调用: 代码块基本语法: 使用代码块的好处(对构造器的补充机制,提取出构造器中相同的内容,放入代码块中): 创建对象时,会先调用代码块中的内容 代码块调用的顺序优先于构造器 2.代码块使用细节1 静态代码块,随类加载而执行,且静态代码块只会执行一次(类加载只
1.类变量的引出 类变量的引出: 引入一个变量count记录加入的小孩数,但count与类没有关系 2.类变量快速入门 所有对象共享一个空间 ——> 类变量 类变量(静态变量)为类的所有实例所共享 类变量可以通过类名来访问 3.类变量内存剖析 静态变量放在那里? ——> 静态变量内存布局 静态
1-2 3 4 5 6 7,这个调用父类的构造器,最终修改的是子类的属性,还是父类的 属性没有动态绑定机制 8 9-10 11-12 13 14, 被隐藏的super 15-16
8.输出10,9,10,t1.count2(),使t1.count++了