作为一名Android开发人员,面试的时候也会经常被问到一些java基础方面的。这就前段时间面试中遇到的一些java方面的,可能不全,只是我面试中遇到的。
写这篇博客只是为了自己在以后的面试中(虽然现在上班了)不要在被同样的问题难到,以后还会持续更新。
1. ArrayList 和 LinkedList:
1.两者是是集合,不同的是内部的数据结构和实现原理有所不同。ArrayList内部是数组结构,LinkedList内部是链表的数据结构。ArrayList的优点是get或set(查询)效率高。LinkedList是add(添加)和remove(删除)效率高。
2. ArrayList他既然是数组结构,数组就每一个元素都有索引,那么当向其中添加一个数据的话,则每一个元素的索引都会发生变化。这样导致效率地下。但是查询的话,我们可以根据索引很容易找到具体的元素。
LinkedList是链表数据结构,当向其中添加或者删除一个数据的时候,它只需要对其前后的数据改变引用即可。因此这方面它比ArrayList效率高。查询的话,由于链表,它必须从头到尾的去遍历,除非要找的元素正好在开头或者末尾,否则他是很好时的
2. Java类中的变量如果不写修饰符,则默认修饰符是什么 ?,是protected。
我面试的时候是直接给看了一张类似的图:
请问图中没有修饰符的textView的默认修饰符是什么。也是protected权限的
3. Java遍历List有几种方式,分别是什么?
- for循环(这个是最容易想到的)
- for eaceh
- Iterartor 迭代器遍历
示例代码:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
for (int i = 1; i < 7; i++) {
list.add("星期" + i);
}
listFor(list); //for循环
listForEach(list);//foreach循环
listIterator(list);//迭代器循环
}
private static void listIterator(List<String> list) {
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String i = (String) iterator.next();
System.out.println("Iterator循环---"+i);
}
}
private static void listForEach(List<String> list) {
for (String string : list) {
System.out.println("foreach循环---"+string);
}
}
private static void listFor(List<String> list) {
for (int i = 0; i < list.size(); i++) {
System.out.println("for循环---"+list.get(i));
}
}
输出结果: