Java基礎總結——筆面題
1.抽象方法能否可以使用static修飾?原因是什麼?
答案:不能,抽象方法需要被子類重寫,而靜态方法不能被重寫。
2.int 和 Integer 有什麼差別?下面倆個輸出語句列印出的結果是什麼?
int a = 1;
int b = 1;
println(a==b);
Integer c = 1;
Integer d = 1;
println(c==d);
答案:int是基本類型,用來表示整型資料,Integer是int對應的包裝類型,可以指向對象。
輸出結果:true true
(Integer内有緩存)
3.編寫一個方法(addAll()),實作以下如何結果:
addAll(1,8); //結果:9
addAll(5,8,-7); // 結果:6
addAll(6,7,-1,-8) // 結果:4
答案:
public int addAll(int... a){
int sum = 0;
for(int i:a){
sum+=i;
}
return sum;
}
4.請闡述線程中run方法與start的關系
答案:run方法中是線程啟動後真正要運作的代碼,start方法的作用是用來啟動線程,線程啟動後會自動執行run方法。
5.說說下面語句是否有錯誤,并指出錯在哪裡
import java.util.List;
...
List list = new List();
答案:報錯,List是接口,不能直接new對象。
6.有以下代碼,請寫出輸出結果
int i = 1;
println(i++);
println(++i);
println(i);
答案:1 , 3, 3
7.有以下程式是否會編譯報錯,如果沒報錯,請描述輸出結果是什麼?如果報錯請寫出理由,并指出如何修改,以及修改後的輸出結果是什麼?
public void test() {
int a;
try{
a = (int)Math.random()*10;
}catch(Exception e){
e.printStackTrace();
}
System.out.println(a);
}
答案:編譯報錯,編譯器認為輸出變量a的時候可能尚未初始化,去掉try-catch或者給a一個初始值即可,輸出結果為0
8.線程中sleep方法與wait方法的差別
答案:sleep是讓目前線程進行休眠,如果這時候線程是拿着鎖對象的,這個鎖對象是【不會】釋放的。
wait是讓目前線程進入等待池,如果這時候線程是拿着鎖對象的,這個鎖對象是【會】釋放的。
9.請列出資料庫事務的四個特性
答案:
原子性、一緻性、隔離性、持久性
10.現在有t1、t2、t3三個線程,你怎樣保證t2在t1執行完後執行,t3在t2執行完後執行?
答案:
在t3線程中調用t2.join().在t2線程中調用t1.join();
11.運作時異常與編譯時異常的差別?
答案:
運作時異常在編譯的時候是不會報錯的,隻有在運作的時候才可能會報錯。
編譯時異常在編譯的時候如果不處理,那麼編譯器就會報錯。
12.以下程式是否會報錯,如果沒有,請寫出結果,有的話請寫出理由。
public class A extends String {
public static void main(String[] agrs) {
int num = 0;
for(int i = 1; i <= 10; i++) {
num += i;
}
System.out.println(num);
}
}
答案:報錯,Stirng類型不能被繼承。
13.請寫出jdbc程式設計步驟
答案:
1.加載/注冊驅動類
2.獲得conn對象
3.獲得stmt對象
4.執行sql語句
5.處理結果集rs
6.關閉資源
14.同步方法和同步代碼塊分别指的是什麼?
答案:給代碼塊加上synchronized關鍵字,那麼就是同步代碼塊
給方法加上synchronized關鍵字,那麼就是同步方法
15. 以下代碼是否會報錯,如果沒有請寫出結果,有請寫出理由
public class A extends Object {
public static void main(String[] agrs) {
short a = 1;
System.out.println(a += 1);
a = a + 1;
System.out.println(a);
}
}
答案:報錯,因為a = a+1;這句代碼中,a+1的結果int類型,會提示int值無法指派給short類型變量。
16. JDK8中的函數式接口的特點是什麼
答案:接口中隻有一個抽象方法。
17.有以下代碼:請使用Lambda在進行實作一次,并将代碼進行簡化。
Action a = new Action(){
public int test(int x,int y){
return x+y;
}
};
答案:Action a = (x,y)->x+y;
18.有以下代碼:編譯是否報錯,如果報錯,請說明原因并進行修改,如果不報錯,請說明代碼的含義。其實Person是Studnet的父類型。
List<Person> list = new ArrayList<Student>();
答案: 報錯,
List<Person>
不是
ArrayList<Student>
的父類型。
修改:
List<Person> list = new ArrayList<Person>();
List<Student> list = new ArrayList<Student>();
List<?> list = new ArrayList<Person>();
19.有以下代碼:編譯是否報錯,如果報錯,請說明原因,如果不報錯,請說明代碼的運作結果
public void test() {
int a = 1;
try {
System.exit(0);
}finally {
System.out.println(a);
}
}
答案:不報錯,運作後什麼都不輸出,因為System.exit(0);直接将JVM退出了。
20.在java中,數字16,使用2進制、8進制、10進制、16進制分别怎麼聲明
答案:
int a1 = 0b10000;
int a2 = 020;
int a3 = 16;
int a4 = 0x10;
21.java中,A類繼承B類,B類繼承C類,那麼在A中是否可以通過super關鍵字直接調用到C類中的方法?
答案:不能。
22.java中,Map集合如何擷取所有key值的集合,如何擷取所有value值的集合,如何擷取key-value鍵值對的集合?寫出調用的方法即可。
答案:
map.keySet();
map.values();
map.entrySet();
23.Mysql的分頁可以使用關鍵字limit來完成,那麼Oracle中的分頁功能可以什麼來完成?
答案:oracle中可以使用rownum來完成分頁功能。
24.抽象類中是否有構造器,它的作用是什麼?
答案: 有構造器,作用是讓子類調用的。
25.請寫出jsp的九大内置對象(WEB)
答案:
pageContent
request
session
application
page
response
out
config
exception