java基础学习资料整理
2017-05-22 15:16
453 查看
1.object中定义了哪些方法?
clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()
ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整大小
LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访问
Vector: 可以看作线程安全版的ArrayList
String: 不可变的字符序列,若要向其中添加新字符需要创建一个新的String对象
StringBuilder: 可变字符序列,支持向其中添加新字符(无需创建新对象)
StringBuffer: 可以看作线程安全版的StringBuilder
强引用: 通常我们使用new操作符创建一个对象时所返回的引用即为强引用
软引用: 若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap
弱引用: 若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这时候只要Bitmap不再使用就会被回收
虚引用: 虚引用是Java中最“弱”的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。
Map<K, V>: Java中存储键值对的数据类型都实现了这个接口,表示“映射表”。支持的两个核心操作是get(Object key)以及put(K key, V value),分别用来获取键对应的值以及向映射表中插入键值对。
Set<E>: 实现了这个接口的集合类型中不允许存在重复的元素,代表数学意义上的“集合”。它所支持的核心操作有add(E e),remove(Object o),contains(Object
o),分别用于添加元素,删除元素以及判断给定元素是否存在于集中。
List<E>: Java中集合框架中的列表类型都实现了这个接口,表示一种有序序列。支持get(int index),add(E e)等操作。
Queue<E>: Java集合框架中的队列接口,代表了“先进先出”队列。支持add(E element),remove()等操作。
Stack<E>:Java集合框架中表示堆栈的数据类型,堆栈是一种“后进先出”的数据结构。支持push(E item),pop()等操作。
HashTable是线程安全的,而HashMap不是
HashMap中允许存在null键和null值,而HashTable中不允许
答案是会执行。finally语句是try执行完后必然会执行的。
特殊情况调用了System.exit()方法;JVM“崩溃”了。
继承Thread类(假设子类为MyThread),并重写run()方法,然后new一个MyThread对象并对其调用start()即可启动新线程。
实现Runnable接口(假设实现类为MyRunnable),而后将MyRunnable对象作为参数传入Thread构造器,在得到的Thread对象上调用start()方法即可。
volatile: Java Memory Model保证了对同一个volatile变量的写happens before对它的读;
synchronized: 可以来对一个代码块或是对一个方法上锁,被“锁住”的地方称为临界区,进入临界区的线程会获取对象的monitor,这样其他尝试进入临界区的线程会因无法获取monitor而被阻塞。由于等待另一个线程释放monitor而被阻塞的线程无法被中断。
ReentrantLock: 尝试获取锁的线程可以被中断并可以设置超时参数。
HashMap的底层实现是散列表,因此它内部存储的元素是无序的;
TreeMap的底层实现是红黑树,所以它内部的元素的有序的。排序的依据是自然序或者是创建TreeMap时所提供的比较器(Comparator)对象。
LinkedHashMap能够记住插入元素的顺序。
clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()
2.ArrayList, LinkedList, Vector的区别是什么?
ArrayList: 内部采用数组存储元素,支持高效随机访问,支持动态调整大小LinkedList: 内部采用链表来存储元素,支持快速插入/删除元素,但不支持高效地随机访问
Vector: 可以看作线程安全版的ArrayList
3.String, StringBuilder, StringBuffer的区别是什么?
String: 不可变的字符序列,若要向其中添加新字符需要创建一个新的String对象StringBuilder: 可变字符序列,支持向其中添加新字符(无需创建新对象)
StringBuffer: 可以看作线程安全版的StringBuilder
4.Java中的四种引用及其应用场景是什么?
强引用: 通常我们使用new操作符创建一个对象时所返回的引用即为强引用软引用: 若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap
弱引用: 若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这时候只要Bitmap不再使用就会被回收
虚引用: 虚引用是Java中最“弱”的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时被销毁。
5.Map, Set, List, Queue、Stack的特点及用法。
Map<K, V>: Java中存储键值对的数据类型都实现了这个接口,表示“映射表”。支持的两个核心操作是get(Object key)以及put(K key, V value),分别用来获取键对应的值以及向映射表中插入键值对。Set<E>: 实现了这个接口的集合类型中不允许存在重复的元素,代表数学意义上的“集合”。它所支持的核心操作有add(E e),remove(Object o),contains(Object
o),分别用于添加元素,删除元素以及判断给定元素是否存在于集中。
List<E>: Java中集合框架中的列表类型都实现了这个接口,表示一种有序序列。支持get(int index),add(E e)等操作。
Queue<E>: Java集合框架中的队列接口,代表了“先进先出”队列。支持add(E element),remove()等操作。
Stack<E>:Java集合框架中表示堆栈的数据类型,堆栈是一种“后进先出”的数据结构。支持push(E item),pop()等操作。
6.HashMap和HashTable的区别
HashTable是线程安全的,而HashMap不是HashMap中允许存在null键和null值,而HashTable中不允许
7.对于“try-catch-finally”,若try语句块中包含“return”语句,finally语句块会执行吗?
答案是会执行。finally语句是try执行完后必然会执行的。特殊情况调用了System.exit()方法;JVM“崩溃”了。
8.简述Java中创建新线程的两种方法
继承Thread类(假设子类为MyThread),并重写run()方法,然后new一个MyThread对象并对其调用start()即可启动新线程。实现Runnable接口(假设实现类为MyRunnable),而后将MyRunnable对象作为参数传入Thread构造器,在得到的Thread对象上调用start()方法即可。
9.简述Java中进行线程同步的方法
volatile: Java Memory Model保证了对同一个volatile变量的写happens before对它的读;synchronized: 可以来对一个代码块或是对一个方法上锁,被“锁住”的地方称为临界区,进入临界区的线程会获取对象的monitor,这样其他尝试进入临界区的线程会因无法获取monitor而被阻塞。由于等待另一个线程释放monitor而被阻塞的线程无法被中断。
ReentrantLock: 尝试获取锁的线程可以被中断并可以设置超时参数。
10.TreeMap, LinkedHashMap, HashMap的区别是什么?
HashMap的底层实现是散列表,因此它内部存储的元素是无序的;TreeMap的底层实现是红黑树,所以它内部的元素的有序的。排序的依据是自然序或者是创建TreeMap时所提供的比较器(Comparator)对象。
LinkedHashMap能够记住插入元素的顺序。
相关文章推荐
- Java基础知识资料整理
- 整理JAVA学习笔记 JAVA基础需要掌握重点
- 黑马程序员_java学习日记_Java基础小知识学习整理
- 黑马程序员java基础学习日记——做题遇到GBK查资料发现了个有趣的文章——ASCII、Unicode、GBK和UTF-8字符编码的区别联系
- Java容器学习笔记(由java编程思想和网上资料整理而成)
- java-面向对象之继承(感言:经过第一天和Java中类的继承和接口的实现的接触,自己需要学习的还很多,还要从基础抓起,尽管有点迷糊,但学到很多很喜欢这种时光!加油!)下面是查到的相关资料以备查看。
- Java 学习资料整理
- java基础学习--最近几天看韩顺平资料学习心得(二)
- Java入门学习资料整理
- JAVA 基础、底层、核心学习资料
- 整理一些Markov Random Field以及Graph Model的基础学习资料
- [JavaCore] 不错的Java基础学习资料-持续更新
- 软件开发JAVA基础+JavaWeb方向+算法与数据结构学习资料我的百度网盘免费下载+优质+超全
- 给大家分享一些Java基础学习资料,后续会不断的更新!
- Java基础知识资料整理
- MYSQL学习资料整理(自制软件+基础资料)
- JAVA基础学习精简心得笔记整理
- JAVA学习资料整理
- JAVA学习笔记整理一(基础知识)
- JAVA学习【10】JVM基础知识整理