Java面试的基础题20190000
-
九种基本数据类型的大小,以及他们的封装类。
答:九种基本的数据类型:boolean, byte, char, short, int, long, float, double, void.
他们的类:Boolean, Byte, Character, Short, Integer, Long, Float, Double, Void -
Switch能否用string做参数?
答:在jdk 7 之前,switch 只能支持 byte、short、char、int 这几个基本数据类型和其对应的封装类型。switch后面的括号里面只能放int类型的值,但由于byte,short,char类型,它们会 自动 转换为int类型(精精度小的向大的转化),所以它们也支持。
注意,对于精度比int大的类型,比如long、float,doulble,不会自动转换为int,如果想使用,就必须强转为int,如(int)float;
jdk1.7之前,为什么不可以呢?因为:
switch (expression) // 括号里是一个表达式,结果是个整数
{
case constant1: // case 后面的标号,也是个整数
group of statements 1;
break;
default:
default group of statements
}
参考:https://www.cnblogs.com/lchzls/p/6711222.html
3. equals与==的区别
答:equal是比较的是两个不在同一内存位置的对象;
""比较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否一致。
如果两个对象的引用相同时(指向同一对象时),“”操作符返回true,否则返回flase。
注意: equal与“==“在Object中两者是一样的。子类一般都要重写这个方法
参考:https://www.cnblogs.com/whcwkw1314/p/8044947.html
4. Object有哪些公用方法?
答:**Object是所有类的父类,任何类都默认继承Object。**主要有以下几种方法:
Clone()方法;getClass方法;toString方法;finalize方法;equals方法;hashCode方法;wait方法;notify方法;notifyAll方法;
参考:https://www.cnblogs.com/zhousysu/p/5483795.html
5.Java的四种引用,强弱软虚,用到的场景。
答:
参考:https://blog.****.net/mazhimazh/article/details/19752475
6. Hashcode的作用
答:hashcode方法返回该对象的哈希码值。
hashCode()方法可以用来来提高Map里面的搜索效率的,Map会根据不同的hashCode()来放在不同的位置,Map在搜索一个对象的时候先通过hashCode()找到相应的位置,然后再根据equals()方法判断这个位置上的对象与当前要插入的对象是不是同一个。
所以,Java对于eqauls方法和hashCode方法是这样规定的:
*如果两个对象相同,那么它们的hashCode值一定要相同;
*如果两个对象的hashCode相同,它们并不一定相同。
综上:HashCode主要是用来提高存储搜索速率的;
参考:https://blog.****.net/a745233700/article/details/83186808
7. ArrayList、LinkedList、Vector的区别。
答:
参考:https://www.cnblogs.com/code-java/p/6847922.html
https://www.cnblogs.com/yw-ah/p/5841327.html
8.String、StringBuffer与StringBuilder的区别。
答:
String最慢的原因:
String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。
适用场合:
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
参考:http://www.cnblogs.com/su-feng/p/6659064.html
https://www.cnblogs.com/xudong-bupt/p/3961159.html