JavaEE学习记录2(JavaOO 知识回顾)
Posted 流水乄心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaEE学习记录2(JavaOO 知识回顾)相关的知识,希望对你有一定的参考价值。
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));
}
}
==========================================================
以上是关于JavaEE学习记录2(JavaOO 知识回顾)的主要内容,如果未能解决你的问题,请参考以下文章