1.super()與this()的區別:
this():當前類的對象,super父類的對象。
super():在子類訪問父類的成員和行為,必須受類繼承規則的約束。
而this它代表當前對象,當然所有的資源都可以訪問。
在構造函數中,如果第一行沒有寫super(),編譯器會自動插入。但是如果父類沒有不帶參的構造函數,或這個函數被私有化了(用private修飾)。此時你必須加入對父類的實例化構造。而this就沒有這個要求,因為它本身就進行實例化的構造。而在方法中super()和this()使用的方法就差不多。只不過super要考慮是否能訪問其父類的資源。
2.作用域public、protected、private,以及不寫時的區別?
public:在不同的包中、類中,或者同一包中均可以使用和訪問
protected:受保護的成員可以被同一包中的類所訪問,還可以被類的子類所訪問,不管子類是在哪個包中。private:只能在同一個類中使用和訪問
不寫時:只能在同一包中和類中使用。
3.Java的事件委托機制和垃圾回收機制:
(1).java事件委托機制的概念—一個源產生一個事件並將它送到一個或多個監聽器哪裡。在這種方案中,監聽器簡單的等待,直到它收到一個事件。一旦事件被接受,監聽器將處理這個事件,然後返回。
(2).垃圾回收機制—垃圾收集是將分配給對象但不再使用的內存回收或釋放的過程。如果一個對象沒有指向它的引用或者其賦值為null,則此對象適合進行垃圾回收。
4.什麼是java序列化?如何實現java序列化?
(1).序列化:
序列化是指—處理對象的機制,所謂對象流也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可以將流化後的對象傳輸於網絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
(2).序列化的實現:
將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable 只是為了標注該對象是可以被序列化的,然後使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接著使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸出流。
---------------------------------------------------------
5.一個“.java”源文件中是否可以包括多個類(不是內部類)?有什麼限制?
(1).是可以包含多個類的。
(2).限制就是:如果這個類的修飾符是public的話,其類名要與文件名必須相同。
6.final類有什麼特點?
1.屬性常量
2.方法不可以overriding(被重寫)
3.類不可以繼承
排序的方法有:
1.插入排序法(直接插入排序、希爾排序)
2.交換排序法(冒泡排序、快速排序)
3.選擇排序法(直接選擇排序、堆序法)
4.歸並排序
5.分配排序(箱排序、基數排序)
java代碼如下:
冒泡排序法:
import java.util.*;
public class Test02{
public static void main(String [] args){
int[] arr={1,8,9,3,2,5,6,4,12};
System.out.pringtln(Arrays.toString(arr));
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-1-i;j++){
if(arr[j]<arr[j+1]){
int temp =arr[j];
arr[j] =arr[j+1];
arr[j+1]=temp;
}
}
}
}
System.out.println(Arrays.to.String(arr));
}
=======================================================
選擇排序法:
import java.util.*;
public class Test03{
public static void main(String [] args){
int[] arr={1,8,9,3,2,5,6,4,12};
System.out.pringtln(Arrays.toString(arr));
for(int i=0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
System.out.pringtln(Arrays.toString(arr));
}
}
================================================
插入一個數排序法:(插入一的數排序。)
import java.util.*;
public class Test04{
public static void main(String [] args){
int [] arr={1,5,8,10,15,19,34,60};
int [] arr1=new int[arr.length+1];
for(int i=0;i<arr.length;i++){
arr1[i] =arr[i];
}
Scanner in = new Scanner(System.in);
System.out.println("請輸入一個數:");
int num =in.nextInt();
int index =arr1.length-1;
for(int i=0;i<arr1.length;i++){
if(arr1[i]>num){
index =i;
break;
}
}
for(int i=arr1.length-1;index;i--){
arr1[i] =arr1[i-1];
}
arr1[index] =num;
System.out.println(Arrays.toString(arr));
}
}
==========================================================