列出了一些Java基础知识相关的问题,并给出了个人理解后的答案(注:答案只是很简单的说了一些,并不全面,想要标准答案的可自行百度)
1.&和&&的区别:
&是位运算符,表示按位与;
&&是逻辑与算符,表示逻辑与;
&&具有短路功能,即当&&之前的条件为false时,不再判断&&之后的条件。
2.Collection和Collections的区别:
Collection是集合类的上级接口,继承他的接口主要有Set和List;
Collections是针对集合类的一个帮助类,他提供了一系列的静态方法实现对各种集合的搜索、排序等操作。
3.转发和重定向的区别:
转发发出一次请求,重定至少发出两次请求;
转发地址(URL)不会改变,重定向地址(URL)会发生改变;
转发请求(request)中的信息不会丢失,重定向请求(request)中的信息会丢失;
转发的速度比重定向快,所以能用转发就不用重定向。
4.Srping的核心控制器:
IOC(控制反转);
AOP(面向切面编程)。
5.Spring MVC的核心控制器:
DispatchServlet
6.线程的生命周期:
新建,就绪,运行,阻塞,死亡。
7.实现多线程常用的两种方法:
一种是继承Thread类,一种是实现Runnable接口。
8.重写(Override)和重载(Overload)的区别:
当子类中定义的某个方法和父类有相同的方法名和参数,我们说该方法被重写(Override);
一个类中定义了多个同名的方法,他们有不同的参数个数或者不同的参数类型,则称为方法的重载(Overload),(重载方法的返回值类型可以不同);
重写父类和子类之间多态性的一种表现,重载是一个类中多态性的一种表现。
9.Java的基本类型:
Java有八种基本类型,分别是:byte、char、short、int、double、float、long、boolean
10.获取String和数组的长度:
String str = "123456";
int a[] = {1,2,3,4,5,6};
int strLength = str.lenght();
int aLength = a.length;
11.Math取整的几个方法:
向上取整:Math.ceil(double a);
向下取整:Math.floor(double a);
四舍五入:Math.round(double a);
四舍五入的规则是在原来数字的基础上加0.5然后向下取整。
12.String和StringBuffer的区别:
String是一个不可变对象,一经创建就不能改变,长度是固定的,String是final类,不能够被继承;
StringBuffer是一个可变对象,是可以被修改的,长度不是固定的,它的创建只能通过构造函数来实现,它的赋值可以通过append方法来实现。
13.Map的遍历:
//Map是一个抽象的接口,不能直接实例化,要使用它的具体实现类
Map<String,String> map = new HashMap<String,String>();
map.put("12","aaa");
map.put("13", "bbb");
map.put("14", "ccc");
map.put("15", "ddd");
//当key值出现重复时,会覆盖之前的value值
map.put("12", "eee");
//方法一:二次取值
for(String key:map.keySet()){
System.out.println(key+" "+map.get(key));
}
//方法二:entrySet遍历
for(Map.Entry<String,String> entry:map.entrySet()){
System.out.println(entry.getKey()+" "+entry.getValue());
}
//方法三:迭代器迭代
Iterator<Entry<String, String>> iterator = map.entrySet().iterator();
while(iterator.hasNext()) {
Entry<String, String> entry = iterator.next();
System.out.println(entry.getKey()+" "+entry.getValue());
}
14.HashMap:
基于哈希表的Map接口实现,将key值通过哈希算法获取到哈希值后放在table表中,而哈希值有重复出现的可能性,为了解决这种冲突,较常用的一种是使用拉链法,即将键值对封装成Node节点,并增加next指向,这样哈希值重复的可以连接成一条单链表,jdk8以后,则又增加了一个新特性,即当单链表的长度大于8的时候转成红黑树。
15.List的遍历:
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
//方法一:for循环
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i));
}
//方法二:超级for循环
for(String str:list) {
System.out.println(str);
}
//方法三:迭代器迭代
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}