J2SE基础
1. 八种基本数据类型的大小,以及他们的封装类。
short, int, long, float, double, byte, char, boolean
Short, Integer, Long, Float, Double, Byte, Char, Boolean
2. Switch能否用string做参数?
java1.7开始可以
3. equals与==的区别。
equals比对类型和数值是否一样;==要求完全是同一对象,在内存地址中一致。
4. Object有哪些公用方法?
toString(), clone(), hashCode(), wait(), getClass(), equals(), notify(), notifyAll(),
5. Java的四种引用,强弱软虚,用到的场景。
强引用,软引用,弱引用,虚引用
StrongReference:强引用,使用最普遍的Object obj = new Object()方式,垃圾回收器不会回收一个强引用的对象obj 。这时候如果内存不足,会抛出异常OutOfMemoryError
要弱化一个强引用,使用obj = null,垃圾回收期在达到生命周期时候或者gc认为不用存在时候回收。
ArrayList数组使用clear方法回收。
SoftReference:软引用,程序内存足够时候,就不需要回收,反之垃圾回收器回收。软引用用来实现对内存敏感的缓存,例如浏览器的后退功能,就可以使用软引用。
String st = new String("st"); //强引用
SoftReference<String> softRef=new SoftReference<String>(str); // 软引用
软引用可以和一个引用队列联合使用,如果软引用所引用的对象被垃圾回收器回收,java虚拟机就会把这个软引用加入到与之关联的引用队列中。
WeakReference:弱引用具有更加短暂的生命周期,在垃圾回收器线程工作时候就会将其回收。但是因为垃圾回收线程的优先级低,因此一般弱引用存在时间不定。
WeakReference<String> st= new WeakReference<String>(str);
一个对象只是偶尔使用,在使用时候又能随时获取到,这个对象又有自己的生命周期,又不想影响该对象的垃圾收集,就可以使用弱引用。
弱引用对象的垃圾回收判断中不会产生任何附加影响,直接回收。
弱引用可以和一个引用队列联合使用,如果弱引用所引用的对象被垃圾回收器回收,java虚拟机就会把这个弱引用加入到与之关联的引用队列中。
PhantomReference:虚引用,意为形同虚设,虚引用不会决定对象的生命周期,就和没有这个对象一样,任何时候都可能被垃圾回收期回收。
虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用必须和引用对队列(ReferenceQueue)联合使用,当垃圾回收器回收一个对象时候,如果发现还有虚引用,就会在回收对象之前,将该虚引用加入到与之关联的引用队列中。
ReferenceQueue queue = new ReferenceQueue();
PhantomReference ph = new PhantomReference(new Object(), queue);
程序可以通过判断引用队列中是否已经加入虚引用,来了解被引用的对象是否已经被垃圾回收器回收。
6. Hashcode的作用。
hash:散列,就是将不同的输入参数,通过算法输出为固定位数输出。即为散列。
散列中1.不同的关键字输出可能相同,称之为碰撞;2.散列值不同,原始输入的参数必定不同;3.如果散列表中存在和原始输入K相同的记录,那么K一定在f(K)的存储位置上。
hashCode():
在java中 1.HashCode的设计目的主要是确定任意对象的唯一性和程序查找的快捷性,HashCode用来在散列存储结构中确定对象的内存地址;
2.如果对象的equals相同,hashCode必定相同;
3.如果对象的equals方法被重写,hashCode也应该尽量重写;
4.如果两个对象hashCode相同,不代表对象等同,只是这两个对象在散列存储结构中,存放的一样
作用:
使用hashCode值取模的方式,简化数组或者队列的对比次数。
例如:假设数组中有1,2,3,4,如果现在有个新参数,放在以上的任意位置,那么在以后使用查找时候就需要一个个找。
使用hashCode%4取模方式,放在模所在的位置上,找的时候直接找这个位置就可以。
7. ArrayList、LinkedList、Vector的区别。
三者都是作为List集合接口子类实现,用来存储一些列对象的引用的集合。
1.Arraylist LinkedList是非线程安全的,Vector线程安全。
2.ArrayList Vector使用数组形式存储数据,LinkedList使用链表。
3.向Arraylist和Vector这样使用数组形式增加元素超出当前数组的长度,他们都需要扩展长度。Vector默认自动增长一倍,Arraylist默认50%,因此最后你获得的这个集合真实占用空间比实际大。
现在ArrayList数组初始化大小可以自己设置。
3.ArrayList和Vector从指定的位置index检索一个对象或者在集合末尾插入、删除一个对象需要的时间一样。其它位置时候是线性增长O(n-i) n元素个数,i索引位置,因为要执行n-i个元素位移操作。
4.LinkedList中,任何位置的增删查改都是一样。但是在查找一个元素时候比较慢,O(i)
当操作一些列元素的访问。或者仅改变元素的首尾操作,适合Arraylist;大量增加删除任意位置的元素LinkedList.
8. String、StringBuffer与StringBuilder的区别。
String和StringBuilder非线程安全。StringBuffer线程安全。
1.String是final对象,一旦创建不可更改。当对其改变时候实际上是该引用指向重新创建新的对象。这样大量新对象会挤压内存,GC回收导致程序性能低下;StringBuffer是每次都对原来对象本身进行操作。
2.在String对象的字符串拼接被JVM看成是StringBuffer拼接。String st = "this is a " + "string" == "this is a string"。
3.StringBuffer线程安全的可变字符序列。类似String的字符串缓冲区,本身不能修改,通过append() insert()方法修改该序列的内容和长度。该字符串缓冲区安全地用于多个线程,必要时候对这些方法进行同步,同步顺序与每个线程顺序一致。append(str)方法将字符加载缓冲区末端,insert(index, str)方法加在指定的点。
4.StringBuilder于JDK1.5新增,提供了StringBuffer兼容的API,但是不同步。用于字符串缓冲区被单个线程使用,比StringBuffer快两者方法基本相同。
9. Map、Set、List、Queue、Stack的特点与用法。
集合类是java中用于集中存储对各数据的。
Collection:一个位置只能一个元素
List Arraylist/LinkedList/Vector 有序可重复
Set HashSet/SortedSet接口的TreeSet 无序不可重复
Queue,先进先出,无法随机访问队列中的元素,poll返回队列头元素
PriorityQueue,该实现类不是按照元素的加入队列顺序而是按照元素大小重新排序
Deque接口,双端队列,可以同时从两端添加删除元素
ArrayQueue基于数组的双端队列。
Stack,继承自Vector,先进后出。
Map,键值对。
HashMap 无序
LinkedHashMap 有序的HashMap子类
HashTable实现类Properties子类,处理属性文件,properties类会将Map对象和属性文件关联
SortedMap
WeakHashMap,只保存对象的弱引用
IdentityHashMap,与HashMap类似,只是在key1==key2时候,IdentityHashMap相等。
10. HashMap和HashTable的区别。
1.HashTable是基于Dictionary类,HashMap是Java1.2后Map接口的实现类。
2.HashMap非线程安全,HashTable线程安全。但是Collections集合工具类synchronziedMap(Map)方法提供可返回了线程安全的对象。
3.HashMap中允许key值为null或者没有找到时候,get()返回null,使用containKey()判断
Properties类继承自HashTable,使用store() load()分别将对象的内容存储在文件中,load()读取文件,getProperty() setProperty()改变对象。
相关推荐
Core Java Interview Question Page 1
"Core Java Interview Questions"这个资源集锦了面试中可能会遇到的一些关键问题,旨在帮助求职者更好地准备Java核心技术的面试。以下是根据描述和标签提炼出的一些核心Java知识点: 1. **Java基础** - 类与对象:...
从国外网站上下载的Java面试题。可以看看国外公司的Java面试常用题,以及如何用英文回答。
这本书名为《Core Java Interview》,其内容是关于Java面试的,英文版本,是一本适合想要面试Java职位的求职者的实用指南。它由Sam Atkinson撰写,并在Leanpub网站上出售,于2016年5月21日发布。Leanpub是一种轻量级...
CoreJava全套详细笔记资料.pdf CoreJava是Java编程语言的核心部分,涵盖了Java语言的基础知识和高级应用。以下是对给定文件的详细解读和知识点总结: 一、原码、反码、补码 * 原码是指一个数的二进制表示形式,...
【Core Java】是Java编程的基础教程,主要涵盖了Java语言的核心概念和使用方法。在学习Core Java时,首先要理解以下几个关键知识点: 1. **类与对象**:类是面向对象编程的基础,是描述某一类事物共性的抽象,而...
Java.Interview.Guide.How.to.Build.Confidence.With.a.Solid.Understanding.of.Core.Java.Principles.B015HF9SJQ.pdf Java.Interview.Guide.How.to.Build.Confidence.With.a.Solid.Understanding.of.Core.Java....
Java 核心技术 第八版-第1和2卷+源代码【Core Java 8th Edition】内附资源: Core Java. Volume I. Fundamentals, 8th Edition.pdf ; Core Java. Volume II. Advanced Features, 8th Edition.chm ; Core Java 8th ...
《Core Java卷1》是Java编程初学者的重要参考资料,它由Cay S. Horstmann和Gary Cornell合著,被誉为Java编程的经典教材。第八版在原有的基础上进行了更新,以适应现代Java开发环境的变化,提供了全面且深入的Java...
《Core Java 1&2》是Java编程领域中两本非常经典的教材,分别对应于卷1和卷2,英文版提供了全面且深入的Java学习资源。这两本书由Cay S. Horstmann和Gary Cornell撰写,是许多程序员入门和进阶Java技术的重要参考书...
Interview Questions in Core Java 1.what is a transient variable? A transient variable is a variable that may not be serialized.
CoreJava DAY01 Java概述 1 CoreJava DAY02 数据类型和控制结构 6 CoreJava DAY03 数组 11 CoreJava DAY04 15 CoreJava DAY05 面向对象 17 CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07修饰...
CoreJava是Java的基础,涵盖了Java Standard Edition (J2SE)的主要内容,包括基本语法、面向对象编程(OO)原则、核心类库的使用等。在学习CoreJava时,我们需要掌握以下几个关键知识点: 1. **编程思想**: - ...
【标题】:“Core Java,Java核心编程” 【描述】:“Java语法基础,Java面向对象编程,图形用户界面(GUI)编程,Java网络编程:Socket编程” 【标签】:“corejava” 在计算机编程领域,Core Java是指Java的...
《Core Java.JAVA核心技术(中文版)》是学习Java编程的重要参考资料,主要涵盖了Java语言的基础以及进阶知识。这本书深入浅出地讲解了Java的核心概念和技术,为读者提供了全面而细致的学习路径。以下是对该书内容的...
Core Java 第1卷是学习Java的入门书籍,适合初学者。
1. **Java语言基础**:书中首先会介绍Java语言的基础,包括如何安装开发环境、编写第一个Hello World程序,以及Java语法的基本要素,如变量、数据类型、运算符、控制结构(if语句、switch、for、while循环)。...
Core Java for the Impatient 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除