Collections工具类的使用 2. 常用方法 说明: ArrayList和HashMap都是线程不安全的,如果程序要求线程安全,我们可以将ArrayList、HashMap转换为线程安全的。 使用synchronizedList(List list) 和 synchronizedMap(Map map)
Map接口 4.2 HashMap在jdk8中相较于jdk7在底层实现方面的不同: * 1. new HashMap():底层没有创建一个长度为16的数组 * 2. jdk 8底层的数组是:Node[],而非Entry[] * 3. 首次调用put()方法时,底层创建长度为16的数组 * 4. jdk7底层结构只有:数组+链表。jd…
1. Map存储数据的特点是什么?并指明key,value,entry存储数据的特点。 双列数据,存储key-value对数据。 key:无序的、不可重复的 → Set 存储 value:无序的、可重复的 → Collection 存储 key-value:无序的、不可重复的 → Set存储 2. 描述HashMap的底层实现原理(jdk 8 版)…
练习3
Collection子接口:Set接口 1. 存储的数据特点:无序的、不可重复的元素 2. 元素添加过程:(以HashSet为例) 我们向HashSet中添加元素a,首先调用元素a所在类的hashCode()方法,计算元素a的哈希值, 此哈希值接着通过某种算法计算出在HashSet底层数组中的存放位置(即为:索引位置),判断 数组此位置上是否已经有…
Collection子接口:List接口 5.存储的元素的要求: 添加的对象,所在的类要重写equals()方法
Iterator接口与foreach循环 1. 遍历Collection的两种方式: ① 使用迭代器Iterator ② foreach循环(或增强for循环) 2.2 作用:遍历集合Collection元素 2.3 如何获取实例:coll.iterator()返回一个迭代器实例 package top.qaqaq.java.P543; impor…
Collection接口 常用方法: add(Object obj),addAll(Collection coll),size(),isEmpty(),clear(); contains(Object obj),containsAll(Collection coll),remove(Object obj),removeAll(Collection …
1. 集合Collection中存储的如果是自定义类的对象,需要自定义类重写哪个方法?为什么? equals()方法。 contains()/remove()/retainsAll().... List:equals()方法 Set:(HashSet、LinkedHashSet为例):equals()、hashCode() (TreeSet为例):…
1. 注解的理解 框架 = 注解 + 反射机制 + 设计模式 5. 如何获取注解信息:通过反射来进行获取、调用。 前提:要求此注解的元注解Retention中声明的生命周期状态为RUNTIME
1. 什么是枚举类?枚举类的对象声明的修饰符都有哪些? 枚举类:类中的对象的个数是确定的,有限个。 private final (NO) public static final (YES) 2. 什么是元注解?说说Retention和Target元注解的作用 元注解:对现有的注解进行解释说明的注解。 Retention:指明所修饰的注解的生命周期。…
1.将字符串"2017-08-16"转换为对应的java.sql.Date类的对象。 (使用JDK8之前或JDK8中的API皆可) SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") 解析:java.util.Date date = sdf.parse("2017-08-16") Da…
6.4 与StringBuffer、StringBuilder之间的转换 String --> StringBuffer、StringBuilder:调用StringBuffer、StringBuilder构造器 StringBuffer、StringBuilder --->String:①调用String构造器;②StringBuffer、Str…
1. 画出如下几行代码的内容结构: String s1 = "hello"; String s2 = "hello"; String s3 = new String("hello"); s1 += "world"; 2.如何理解String类的不可变性 String 指向常量池的数据,不能做任何的修改,如果需要修改必须新造一个数据,用来存储新的内容…
先上结论:jdk1.8及以前String使用的是char数组,jdk1.9及以后使用的是byte数组。 因为开发人员发现人们使用的字符串值是拉丁字符居多而之前使用的char数组每一个char占用两个字节而拉丁字符只需要一个字节就可以存储,剩下的一个字节就浪费了,造成内存的浪费,gc的更加频繁。因此在jdk9中将String底层的实现改为了byte数…
线程的同步机制 2.Java解决方法:同步机制
1. 画图说明线程的生命周期,以及各状态切换使用到的方法等 状态,方法 2. 同步代码块中涉及到同步监视器和共享数据,谈谈你对同步监视器和共享数据的理解,以及注意点。 synchronized(同步监视器){ //操作共享数据的代码(不能包括多了,也不能包括少了) } 同步监视器:是一个对象,任何一个类的对象都可以充当,多个线程必须要共用同一个监视…
1. 谈谈你对程序、进程、线程的理解 程序:是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程:是程序的一次执行过程,或是正在运行的一个程序。 线程:进程可进一步细化为线程,是一个程序内部的一条执行路径。 2. 代码完成继承Thread的方式创建分线程,并遍历100以内的自然数 3. 代码完成实现Runnable…
throw和throws的区别 throw 抛出异常 在方法体内 是生成一个异常对象 throws 声明异常 在方法声明处 是异常处理的一种方式 throw和throws可能会同时出现
手动抛出异常对象 1. 使用说明 在程序执行中,除了自动抛出异常对象的情况之外,我们还可以手动的throw一个异常类的对象。 2.[面试题] throw 和 throws 区别: throw 表示抛出一个异常类的对象,生成异常对象的过程。声明在方法体内。 throws 属于异常处理的一种方式,声明在方法的声明处。