02 2022 档案
摘要:Map概述 一、Map框架* | Map接口:双列集合,用来存储一对(key - value)一对的数据 -->高中函数: y=f(x)* * | HashMap:作为Map的主要实现类,是线程不安全的,效率高,可以存储null的key和value* | LinkedHashMap:保证在遍历map
阅读全文
摘要:HashMap的底层实现原理 jdk7中: HashMap map = new HashMap(); ,在实例化以后,底层创建了长度为16的一维数组Entry[] table map.put(key1,value1);,添加一个元素,首先,调用key1所在类的hashCode()计算key1的哈希值
阅读全文
摘要:ArrayList、LinkedList、Vector三者的异同? 相同点:三个类都是List接口的实现类,存储数据的特点相同:存储有序的、可重复的数据。 不同点:ArrayListList接口的主要实现类是线程不安全的,效率高;底层使用Object[] elementData存储。 LinkedL
阅读全文
摘要:HashSet的面试题 public class HashSetTest { @Test public void test(){ HashSet set = new HashSet(); Person p1 = new Person(1001, "AA"); Person p2 = new Pers
阅读全文
摘要:HashSet(底层是HashMap实现) Set:存储无序的、不可重复的数据,以HashSet为例说明: HashSet作为Set接口的主要实现类,底层是数组+链表的数据结构(jdk7中);是线程不安全的;可以存储null值 1. 无序性:不等于随机性,存储的数据在底层数组中并非按照数组索
阅读全文
摘要:HashSet(底层是HashMap实现) Set:存储无序的、不可重复的数据,以HashSet为例说明: HashSet作为Set接口的主要实现类,底层是数组+链表的数据结构;是线程不安全的;可以存储null值 1. 无序性:不等于随机性,存储的数据在底层数组中并非按照数组索引的顺序添加,
阅读全文
摘要:ArrayList、LinkedList、Vector ArrayList源码分析 jdk7下: * ArrayList list = new ArrayList();//底层创建了长度为10的Object[]数组elementData * list.add(123);//elementData[0
阅读全文
摘要:集合之Collection /** * @author ccchai * @create 2022-02-22 14:11 * * * 1.数组在存储多个数据方面的缺点: * > 一旦初始化以后,其长度就不可修改 * > 数组中提供的方法非常有限,对于添加、删除、修改、插入数据等操作,非常不便,同时
阅读全文
摘要:集合的遍历之Collection 迭代器iterator接口 /** * 集合元素的遍历操作,使用迭代器iterator接口 * 1.内部的方法 hasNext() 和 next() 搭配使用 * 2.集合对象每次调用iterator()都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前
阅读全文
摘要:Comparable和Comparator的使用 public class Goods implements Comparable{ String name; double price; public Goods() { } public Goods(String name, double pr
阅读全文
摘要:JDK8的日期和时间的API public class JDK8DateTimeTest { /* LocalDate、LocalTime、LocalDateTime 的使用 说明: 1.LocalDateTime相较于LocalDate、LocalTime,使用频率要高 2.类似于Calendar
阅读全文
摘要:JDK8之前日期和时间的API /** * * JDK8之前日期和时间的API测试 * 1.System类中currentTimeMills() * 2.java.util.Date和子类java.sql.Date * 3.SimpleDateFormat * 4.Calendar * * @aut
阅读全文
摘要:String、StringBuffer、StringBuilder String、StringBuffer、StringBuilder三者的异同? String:不可变的字符序列;底层使用char[]存储 StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char[]存储 Str
阅读全文
摘要:String 与 byte[]之间的转换 public class StringTest1 { /* String 与 byte[]之间的转换 编码 String --> byte[]:调用String的getBytes() 解码 byte[] --> String:调用String的构造方法
阅读全文
摘要:String的声明 public class StringTest { @Test public void test4(){ String s1 = "helloworld"; String s2 = "world"; String s3 = "hello"+s2; System.out.prin
阅读全文
摘要:多线程 多线程的创建方式 方式一:继承于Thread类 创建一个继承于Thread类的子类 重写Thread类的run() --> 将此线程执行的操作声明在此方法中 创建Thread类的子类的对象 通过此对象调用start() 注意:1. 我们不能通过直接调用run()的方式启动线程,这样就只有一个
阅读全文
摘要:转载https://blog.csdn.net/weixin_33138569/article/details/113298607 最近遇到了个没遇到过的问题 花费了很长时间去解决 问题大致是这样的:比如 user表里一条数据 name: 张三ABC23 age :15 在模糊查询控制台打印的sql
阅读全文
摘要:相同点:二者都可以使当前进程进入阻塞状态 不同点:① sleep()声明在Thread类中,wait()声明在Object类中 ②sleep()可以在任何需要的场景下使用,wait()必须使用在同步代码块或同步方法中 ③如果两个方法都使用在同步代码块或同步方法中,sleep()不会释放锁,wait(
阅读全文
摘要:相同:二者都可以解决线程安全问题。 不同:synchronized机制在执行完相应的同步代码块以后,自动的释放同步监视器 Lock需要手动的启动同步【lock()】,也需要手动的结束同步【unlock()】
阅读全文
摘要:面向对象 理解“万事万物皆对象” 在Java语言范畴中,我们都将功能、结构等封装到类中,通过类的实例化,来调用具体的功能结构 Scanner,String等 文件:File 网络资源:URL 涉及到Java语言与前端html、后端数据库交互时,前后端的结构都体现为类、对象 方法的重载(overloa
阅读全文
摘要:单例模式 所谓类的单例设计模式:就是采取一定的方法保证在整个的软件系统中,对某一个类只能存在一个对象实例 区分饿汉式和懒汉式 饿汉式: 坏处:对象加载时间过长 好处:是线程安全的 懒汉式: 好处:延迟对象的创建 饿汉式1 public class SingletonTest1 { pub
阅读全文