Java面向对象精选二十题

1.super()与this()的区别?
This():当前类的对象,super父类对象。
Super():在子类访问父类的成员和行为,必须受类继承规则的约束
而this他表明当前对象,固然全部的资源均可以访问.
在构造函数中,若是第一行没有写super(),编译器会自动插入.可是若是父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,由于它自己就进行实例化的构造.
而在方法中super和this使用的方法就差很少了.只不过super 要考虑是否能访问其父类的资源.java

2.做用域public,protected,private,以及不写时的区别?
Public:不一样包、同一包、类内均可用
Private:类内
Protected: 不一样包的子类、同一包、类内均可用
不写时:同一包内、类内
3.编程输出以下图形。编程




  • *
  • 代码以下:
    public class Print {
    public static void main(String[] args) {
    for (int i = 0; i < 5; i++) {
    for (int j = 5; j > i; j--) {
    System.out.print("*");
    }
    System.out.println();
    }
    }
    }
    4.JAVA的事件委托机制和垃圾回收机制
    java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,而后返回。
    垃圾回收机制 垃圾收集是将分配给对象但再也不使用的内存回收或释放的过程。若是一个对象没有指向它的引用或者其赋值为null,则次对象适合进行垃圾回收windows

5.在JAVA中,如何跳出当前的多重嵌套循环?
用break; return 方法。
6.什么是java序列化,如何实现java序列化?(写一个实例)
序列化:
能够将一个对象保存到一个文件,因此能够经过流的方式在网络上传输,能够将文件的内容读取,转化为一个对象。网络

处理对象流的机制,所谓对象流也就是将对象的内容进行流化。能够对流化后的对象进行读写操做,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操做时所引起的问题。
序列化的实现:
将须要被序列化的类实现Serializable接口,该接口没有须要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,而后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就能够将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。
7.一个".java"源文件中是否能够包括多个类(不是内部类)?有什么限制?
能够。若是这个类的修饰符是public,其类名与文件名必须相同。
8.排序都有哪几种方法?请列举。用JAVA实现一个快速排序?
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码。
9.Overload和Override的区别。Overloaded的方法是否能够改变返回值的类型?
方法的
重写Override,子类覆盖父类的方法,将子类传与父类的引用调用的仍是子类的方法。
重载Overloading 一个类多个方法,名称相同,参数个数类型不一样。
二者都是Java多态性的不一样表现。
Overloaded的方法是能够改变返回值的类型。
1, public class Ctest()
{
Public static void main()
{
System.out.prinln(8+8+”88”+8+8);
}
}框架

168888
10.Final类有什么特色?
属性常量
方法不能够overridding
类不能够继承
11.继承时候类的执行顺序问题,通常都是选择题,问你将会打印出什么?
答:父类:
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:
C:>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
12.内部类的实现方式?
答:示例代码以下:
package test;
public class OuterClass
{
private class InterClass
{
Public Interlass()
{
System.out.println("InterClass Create");
}
}
public OuterClass()
{
InterClass ic = new InterClass();
System.out.println("OuterClass Create");
}
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
}
输出结果:
C:>java test/OuterClass
InterClass Create
OuterClass Create
13.用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?dom

  1. 如在COLLECTION框架中,实现比较要实现什么样的接口?
    15.用插入法进行排序代码以下
    package test;
    import java.util.*;
    class InsertSort
    {
    ArrayList al;
    public InsertSort(int num,int mod)
    {
    al = new ArrayList(num);
    Random rand = new Random();
    System.out.println("The ArrayList Sort Before:");
    for (int i=0;i<num ;i++ )
    {
    al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
    System.out.println("al["+i+"]="+al.get(i));
    }
    }
    public void SortIt()
    {
    Integer tempInt;
    int MaxSize=1;
    for(int i=1;i<al.size();i++)
    {
    tempInt = (Integer)al.remove(i);
    if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
    {
    al.add(MaxSize,tempInt);
    MaxSize++;
    System.out.println(al.toString());
    } else {
    for (int j=0;j<MaxSize ;j++ )
    {
    if

(((Integer)al.get(j)).intValue()>=tempInt.intValue())
{
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("The ArrayList Sort After:");
for(int i=0;i<al.size();i++)
{
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100);
is.SortIt();
}
} ide

JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口
16.编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 可是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
答:代码以下:
public static void split(String source,int num) throws Exception
{
int k=0;
String temp="";
for (int i = 0; i <source.length(); i++)
{
byte[] b=(source.charAt(i)+"").getBytes();
k=k+b.length;
if(k>num)
{
break;
}
temp=temp+source.charAt(i);
}
System.out.println(temp);
}
1五、Java编程,打印昨天的当前时刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
1六、文件读写,实现一个计数器
public int getNum(){
int i = -1;
try{
String stri="";
BufferedReader in = new BufferedReader(new FileReader(f));
while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
return i;
}
public void setNum(){
int i = getNum();
i++;
try{
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false)));
out.write(String.valueOf(i)); //多是编码的缘由,若是直接写入int的话,将出现java编码和windows编码的混乱,所以此处写入的是String
out.close() ;
}catch(Exception e){
e.printStackTrace();
}
}
1七、指出下面程序的运行结果。
class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B(); //执行到此处,结果: 1a2b
ab = new B(); //执行到此处,结果: 1a2b2b
}
}
  注:类的static 代码段,能够看做是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其自己的构造
1八、抽象类和接口的区别?
(1)接口能够被多重implements,抽象类只能被单一extends
(2)接口只有定义,抽象类能够有定义和实现
(3)接口的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)
当功能须要累积时用抽象类,不须要累积时用接口。
1九、什么是类的返射机制?
经过类(Class对象),能够得出当前类的fields、method、construtor、interface、superClass、modified等,同是能够经过类实例化一个实例、设置属性、唤醒方法。Spring中一切都是返射、struts、hibernate都是经过类的返射进行开发的。
20、类的返射机制中的包及核心类?
 java.lang.Class
 java.lang.refrection.Method
 java.lang.refrection.Field
 java.lang.refrection.Constructor
 java.lang.refrection.Modifier
 java.lang.refrection.Interface函数

相关文章
相关标签/搜索